大端模式與小端模式

2021-07-10 02:07:54 字數 850 閱讀 6039

小端機(little-endian)/大端機(big-endian)

舉乙個例子,比如數字0x12 34 56 78在記憶體中的表示形式為:

使用 union

bool islittleendian()

foo;

foo.a = 1;

// 00 00 00 01

return foo.b == 1;

// 保留最前的 00,也即高位位元組存放在低位址,為大端機

// 還是最後的 01,也即低位位元組存放低位址,為小端機

}

仍然是妙不可言的 union

union

foo;

foo.a = 0x12345678;

printf("%x, %x, %x, %x\n", foo.buf[0], foo.buf[1], foo.buf[2], foo[3]);

// 小端機的輸出為:78, 56, 34, 12

// 大端機的輸出為:12 34 56 78

方法之二:

unsigned int a = 0x12345678;

unsigned char bytes[4];

bytes[0] = (a >> 24) & 0xff;

bytes[1] = (a >> 16) & 0xff;

bytes[2] = (a >> 8) & 0xff;

bytes[3] = a & 0xff;

[1] converting an int into a 4 byte char array (c)

[2] 詳解大端模式和小端模式

大端模式與小端模式

記憶體 位址 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 十六進製制數 1234 5678 x 大端模式 資料中的高位位元組資料存放在位址中的低位位置,資料中的低位位元組資料則存放在位址中的高位位置,是正常邏輯順序,方便人的理解。要注意的是 不管是大端模式還是...

大端模式與小端模式

之前一直不在意大端模式與小端模式,隨著學習的過程,這裡總結一下 小端模式 little endian 低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的低位址端 大端模式 big endian 高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端 網路位元組序 tcp ip各層...

大端模式與小端模式

對於跨越多位元組的程式物件,我們必須建立兩個規則 這個物件的位址是什麼,以及在儲存器中如何安排這些位元組。在幾乎所有的機器上,多位元組物件都被儲存為連續的位元組序列,物件的位址為所使用位元組的最小位址。例如,假設乙個型為int變數x的位址為0x100,也就是說,位址表示式 x的值為0x100。那麼,...