big endian and little endian
? ? ? ? ?big endian(大端)和little endian(小端)表示機(jī)器對(duì)變量字節(jié)的存儲(chǔ)順序。big endian表示低地址存放最高有效字節(jié),little endian表示低地址存放最低有效字節(jié)。這里我們還要明白低字節(jié)和低地址的含義。
? ? ? ? ? ?一個(gè)16進(jìn)制數(shù)0x1234,12表示高字節(jié),34表示低字節(jié)。內(nèi)存中存儲(chǔ)是由低地址到高地址。如果是big endian,則存儲(chǔ)順序?yàn)?234;如果是little endian,則存儲(chǔ)順序?yàn)?412。網(wǎng)絡(luò)協(xié)議都是采用big endian的方式來(lái)傳輸?shù)?#xff0c;所以數(shù)據(jù)在發(fā)送之前都要進(jìn)行轉(zhuǎn)換。
下面給出一個(gè)算法判斷系統(tǒng)是big endian還是lilltle endian
代碼來(lái)源:后臺(tái)開發(fā)核心技術(shù)與應(yīng)用實(shí)踐
?
#include<stdio.h>//共用體 union TEST {short a;char b[sizeof(short)]; };int main() {TEST test;test.a=0x0102;if(test.b[0]==0x01 && test.b[1]==0x02){printf("big endian\n");}else if(test.b[0]==0x02 && test.b[1]==0x01){printf("little endian\n");}else{printf("unkown\n");}return 0; }打印:little endian
?
這里也學(xué)習(xí)了union的用法,union同一時(shí)間只能存儲(chǔ)一個(gè)成員的值,但是每個(gè)成員都可以訪問(wèn)這個(gè)值,但是相同的對(duì)于不同的數(shù)據(jù)類型顯示的結(jié)果不同。
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的big endian and little endian的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 防止头文件的重复包含
- 下一篇: 静态链接库