位元組順序:小端和大端之爭
阿新 • • 發佈:2019-02-03
1個位元組在記憶體儲存沒有爭議,當多個位元組在記憶體中儲存時,就有了不同的意見,目前,主要有2個方式:
小端:低位元組存低地址,高位元組存高地址。Little-Endian
大端:高位元組存低地址,低位元組存高地址。Big-Endian
看圖:
小端位元組序:低位元組存於記憶體低地址;高位元組存於記憶體高地址。如一個long型資料0x12345678,以位元組為最小單位。
0x0029f458 0x78
0x0029f459 0x56
0x0029f45a 0x34
0x0029f45b 0x12
大端位元組序:高位元組存於記憶體低地址;低位元組存於記憶體高地址。
0x0029f458 0x12
0x0029f459 0x34
0x0029f45a 0x56
0x0029f45b 0x78
intel的cpu都是用的小端模式。
在linux下可以用巨集直接檢視:
printf("Little endian:%d\n",__LITTLE_ENDIAN);//in stdlib.h printf("Big endian:%d\n",__BIG_ENDIAN); printf("mine:%d\n",__BYTE_ORDER);
還可以在gdb中直接檢視變數的二進位制碼。