網(wǎng)絡(luò)傳輸是大端還是小端 java網(wǎng)絡(luò)編程是大端還是小端?
java網(wǎng)絡(luò)編程是大端還是小端?網(wǎng)絡(luò)傳輸中使用的大端標(biāo)記方法,即先傳輸權(quán)值較高的數(shù)字,就像先傳輸12、10、2一樣。即使后者輸了,損失也不算太大。小端與機(jī)器有關(guān)。如果您要封裝一個數(shù)字,比如int,封裝
java網(wǎng)絡(luò)編程是大端還是小端?
網(wǎng)絡(luò)傳輸中使用的大端標(biāo)記方法,即先傳輸權(quán)值較高的數(shù)字,就像先傳輸12、10、2一樣。即使后者輸了,損失也不算太大。小端與機(jī)器有關(guān)。如果您要封裝一個數(shù)字,比如int,封裝后應(yīng)該是big end。您可以調(diào)用htons()或htonl()函數(shù)將其轉(zhuǎn)換為big end(當(dāng)然,您也可以用big end的方式封裝它,這會有點(diǎn)麻煩)。在傳輸?shù)倪^程中,當(dāng)然也是大端,接收的緩沖區(qū)也是大端,但是在讀取int類型時,需要將大端轉(zhuǎn)換成小端(使用ntohs()函數(shù)或ntohl()函數(shù)),這樣才能讀取原始的數(shù)字??梢韵胂螅绻褂脵C(jī)器A和B進(jìn)行通信,而A和B的終端序列相同,則中間沒有轉(zhuǎn)換。但這并不是一個好習(xí)慣,因?yàn)槿绻浦驳綑C(jī)器的另一端序列,那么就需要修改代碼,嚴(yán)重破壞設(shè)計。所以最好使用這些函數(shù)。
什么是大端模式和小端模式?
當(dāng)一個數(shù)字需要超過一個字節(jié)來存儲時,大端和小端之間存在差異。當(dāng)只使用一個字節(jié)時,小端放在低位地址并不重要,即小端稱為小端,反之亦然,稱為大端C和C我們需要面對這樣的問題。Java和其他高級語言已經(jīng)屏蔽了這種差異,不需要額外的處理。在C中,我們可以使用下面的代碼片段來確定它是一個大端還是一個小端聯(lián)合{char C int i}UU。I=1If(U.C==1){//小端}否則{//大端}