2011年3月13日日曜日

バイトオーダーのチェック(ネットワークバイトオーダーへの変換)

バイトオーダーをチェックする際には以下のようなコードを利用することができます。
32ビット整数に数字の 1 を代入し、先頭8ビットのみを調べて数字の 1 と同じ値になるのがリトルエンディアン、0 になるのがビッグエンディアンになります。
例:2バイト(16ビット)の数値(1)
ビッグエンディアン  00000000 00000001  (Byte4:Byte3:Byte2:Byte1)
リトルエンディアン  00000001 00000000  (Byte1:Byte2:Byte3:Byte4)

下記の例題では、バイトオーダーをチェックし、その並び順に沿ったバイト列を表示しています。
また、htons/htonl 関数によりネットワーク間のデータ送受信に用いられるネットワークバイトオーダー(ビッグエンディアン)に変換し、バイト列を表示しています。

実行結果

0 件のコメント:

コメントを投稿