アプリ版:「スタンプのみでお礼する」機能のリリースについて

Unixの"od"コマンドの出力結果について「?」があります。

以下のようにコマンド入力しました。

$ echo あ | od -x
0000000 a082 000a
0000003

「あ」の文字コードは0x82A0のはずですが、"od"コマンドの出力結果は"a082"となります。
これはどうしてでしょうか?
困っているわけではないのですが、すごーく気になるので、どなたか教えてください。


OS環境はRedHat Linux7.3で、TeraTermを使ってログインし、コマンドを入力しています。
TeraTermの漢字コードは「SJIS」にしています。
「EUC」に設定した場合でも同様の現象です。

A 回答 (2件)

CPU アーキテクチャは Intel ですね?


Intel CPU においては「リトルエンディアン(little endian)」という形式で
データが転送されたり格納されたりします。
これはどういうことかというと、2バイト以上の長さのデータでは
上位バイトと下位バイトが逆転するのです。

それで本来 0x82,0xa0 という並びになるはずの数値が 0xa0,0x82
という表現をとるわけです。

このように下位の(小さい=little)方(end)が先頭に来る CPU を「little endian」、
逆に Sun SPARC など素直に上位バイト、下位バイトの順に並ぶ CPU を
「ビッグエンディアン(big endian)」と呼びます。

ちなみに、この「リトルエンディアン(little endian)」や「ビッグエンディアン(big endian)」
という語はスウィフトの「ガリバー旅行記」に由来し、
卵の尖った方から食べるのが正しいと主張する一派を「リトルエンディアン」、
丸いほうから食べるべしと唱えた一派を「ビッグエンディアン」
と呼んだことから始まります。ハッカー(スーパープログラマ)一流の洒落ですね。

参考URL:http://www.atmarkit.co.jp/icd/root/00/49717200.h …
    • good
    • 0
この回答へのお礼

IBMのAIXで"od"コマンドを使ってみましたが、Linuxとは異なる結果(私が期待していた結果ですね)になりました。
とても勉強になりました。どうもありがとうございます。

お礼日時:2003/05/14 18:38

検索キーワードは,



・バイトオーダー
・(ビッグ/リトル)エンディアン

などです.
移植性のあるプログラムを開発しようとするときは必須の知識ですね.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!