小端機(little-endian)/大端機(big-endian)
舉乙個例子,比如數字0x12 34 56 78在記憶體中的表示形式為:
使用 union
仍然是妙不可言的 unionbool islittleendian()
foo;
foo.a = 1;
// 00 00 00 01
return foo.b == 1;
// 保留最前的 00,也即高位位元組存放在低位址,為大端機
// 還是最後的 01,也即低位位元組存放低位址,為小端機
}
方法之二: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
[1] converting an int into a 4 byte char array (c)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;
[2] 詳解大端模式和小端模式
大端模式與小端模式
記憶體 位址 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 十六進製制數 1234 5678 x 大端模式 資料中的高位位元組資料存放在位址中的低位位置,資料中的低位位元組資料則存放在位址中的高位位置,是正常邏輯順序,方便人的理解。要注意的是 不管是大端模式還是...
大端模式與小端模式
之前一直不在意大端模式與小端模式,隨著學習的過程,這裡總結一下 小端模式 little endian 低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的低位址端 大端模式 big endian 高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端 網路位元組序 tcp ip各層...
大端模式與小端模式
對於跨越多位元組的程式物件,我們必須建立兩個規則 這個物件的位址是什麼,以及在儲存器中如何安排這些位元組。在幾乎所有的機器上,多位元組物件都被儲存為連續的位元組序列,物件的位址為所使用位元組的最小位址。例如,假設乙個型為int變數x的位址為0x100,也就是說,位址表示式 x的值為0x100。那麼,...