エンディアンについてのメモ
ビッグエンディアンで記録されている数値を読み出す処理が、逆なんじゃないかと思ったら、実はx86はリトルエンディアンで記録しているということでした。本当にそうなっているのかC言語で確認しました。
#include <assert.h> #include <stdint.h> #include <string.h> int main(void) { uint64_t x = 0x0123456789ABCDEFllu; uint32_t y[2]; memcpy(y, &x, sizeof(uint64_t)); assert(0x89ABCDEF == y[0]); assert(0x01234567 == y[1]); uint64_t z = ((uint64_t)y[1] << 32)| y[0]; assert(x == z); return 0; }