質問編集履歴
1
本文内のですます口調の統一 / 前提にホストはリトルエンディアンであることを追記 / 何が問題なのか?を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
Ubuntu20.10(Dockerコンテナ)上でホストバイトオーダーを求めようと考えました。一般的にはシェルで簡単に求められると思うのですが、今回はhtonl / ntohl を使って判別
|
3
|
+
Ubuntu20.10(Dockerコンテナ)上でホストバイトオーダーを求めようと考えました。一般的にはシェルで簡単に求められると思うのですが、今回はhtonl / ntohl を使って判別するケースを考えたいです。また、ホストはx86_64であるためリトルエンディアンであると前提します。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -24,11 +24,11 @@
|
|
24
24
|
|
25
25
|
unsigned int x = 0xAABBCCDD;
|
26
26
|
|
27
|
-
// hton
|
27
|
+
// htonlはネットワークバイトオーダー(ビッグエンディアン)に
|
28
28
|
|
29
|
-
// ntoh
|
29
|
+
// ntohlはネットワークバイトオーダーの値をホストのエンディアンに変換する
|
30
30
|
|
31
|
-
// すなわち hton
|
31
|
+
// すなわち htonl(x) == ntohl(x) であればホストバイトオーダーはビッグエンディアンである
|
32
32
|
|
33
33
|
printf("ホストバイトオーダーは");
|
34
34
|
|
@@ -62,13 +62,13 @@
|
|
62
62
|
|
63
63
|
```
|
64
64
|
|
65
|
-
上記プログラムからはビッグエンディアンであると言われ
|
65
|
+
上記プログラムからはビッグエンディアンであると言われます。
|
66
66
|
|
67
67
|
|
68
68
|
|
69
69
|
### 何が問題なのか?
|
70
70
|
|
71
|
-
同ホスト上でodコマンドを使ってエンディアンを求めると、リトルエンディアンであることが確認される。
|
71
|
+
同ホスト上でodコマンドを使ってエンディアンを求めると、リトルエンディアンであることが確認されます。私が該当のソースコードに書いたコードはホストがビッグエンディアンという結果を出していることが今回の問題です。
|
72
72
|
|
73
73
|
```
|
74
74
|
|
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
|
84
84
|
|
85
|
-
同様に下記のエンディアンを求めるプログラムからもリトルエンディアンであると言われ
|
85
|
+
同様に下記のエンディアンを求めるプログラムからもリトルエンディアンであると言われます。
|
86
86
|
|
87
87
|
```c
|
88
88
|
|