2バイト文字とエンディアン。

もしくは、文字コードとバイトオーダ。
もしくは、マルチバイト文字とインディアン。*1

http://www.hatena.ne.jp/1078478291


エンディアンが関係してくるのは、2バイト以上のデータ1個。それを1バイトの並び*2にするときに、どのバイトを先に持ってくるかがエンディアンの違い。したがって、1バイトの配列にエンディアンは関係ない。

文字コード。とりあえずunicode*3は置いといて、sjiseucなんかの話。これらは2バイトの配列で表してるんではなくて、1バイトの配列の中に混ぜて、2つ分使って漢字やなんかを表してる。*4 つまり、1つ目の1バイトと2つ目の1バイトの値が決まってる。*5 だからsjisでもeucでも1バイト(char)の配列で表せる。

よって、文字コード(sjiseuc)と、エンディアンは関係ない。


ってことでいいのかなぁ。
wchar_tとかだとだめっぽいような。

*1:インディアン違う。

*2:1バイトの中では、エンディアンは関係ない。00001111が11110000になったりはしない。

*3:UTF-16は2バイト(16ビット)単位。エンディアンが関係してくるので、UTF-16-LEとUTF-16-BEと2つある。

*4:1バイト1つで表せるアルファベットなんかはsjisでもeucでも共通なので、sjiseucを間違えて日本語が文字化けしてもアルファベットはちゃんと見れる。

*5:"あ"ってのは、( 0xAB, 0xCD )であって、0xABCDでも0xCDABでもない。(値てきとー)