一直以為自己對大端小端的區別已經掌握得很清楚了,沒想到在實際應用中還是會犯糊塗,這裡記錄一下,同樣的錯誤不能再犯了。
uint32_t temp = 0x01020304;
大端:&temp地址處存放的是高字節,即((uint8_t *)&temp)[0] = 0x01;
小端:&temp地址處存放的是低字節,即((uint8_t *)&temp)[0] = 0x04;
切記切記
大端模式就是低位存放在高地址上。高位存放在地址上。
小端模式就是地位存放在低地址上。高位存放在高地址上。
例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
內存地址 0x4000 0x4001
存放內容 0x34 0x12
而在Big-endian模式CPU內存中的存放方式則為:
內存地址 0x4000 0x4001
存放內容 0x12 0x34
可以的,32位系統中int占用32位,char占用8位
78即為小端數據,12為大端