小字節序 VS 大字節序

2021-05-23 09:38:33 字數 1270 閱讀 6321

小字節序:(比如x86體系) 資料的低位元組放在低位址處,比如乙個整型數0x12345678,在記憶體中的

分布為:

-----------

|    78   | ***x_0000

-----------

|    56   | ***x_0001

-----------

|    34   | ***x_0002

-----------

|    12   | ***x_0003

-----------

little endian

分布為:

-----------

|    12   | ***x_0000

-----------

|    34   | ***x_0001

-----------

|    56   | ***x_0002

-----------

|    78   | ***x_0003

-----------

big endian

比如有如下結構體定義:

typedef struct

my_struct;

u16 value = 0x1234;

my_struct *p;

p = (my_struct *)&value;

(1)在小字節序的系統上,它的分布如下:

15       10|9        4|3    0

---------------------------------

| index   |   tgid   | rsvd |

---------------------------------

value的值為0x1234,則:

0001 0010 0011 0100

rsvd : 0x04

tgid : 0x23

index : 0x04

(2)在大字節序的系統上,它的分布如下:

15   12|11       6|5       0

--------------------------------

| rsvd |   tgid   | index |

--------------------------------

value的值為0x1234,則:

0001 0010 0011 0100

rsvd : 0x01

tgid : 0x08

index : 0x34

關於大字節序和小字節序

大字節序 計算機體系結構中一種描述多位元組儲存順序的術語,在這種機制中最重要位元組 msb 存放在最低端的位址上。採用這種機制的處理器有ibm3700系列 pdp 10 mortolora微處理器系列和絕大多數的risc處理器。把高有效位放在低位址段,例如在按位元組定址的儲存器中往位址 0x0001...

網路位元組序VS主機位元組序

不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...

大端位元組序 小端位元組序(網路位元組序 主機位元組序)

大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...