可能重複:
How do I convert between big-endian and little-endian values in C++?C++ 32位字的字節交換
我想知道你會怎麼字節交換一個32位字
我有一個巨大的緩衝這些單詞中的每一個都需要由於字節順序而進行字節交換。
可能重複:
How do I convert between big-endian and little-endian values in C++?C++ 32位字的字節交換
我想知道你會怎麼字節交換一個32位字
我有一個巨大的緩衝這些單詞中的每一個都需要由於字節順序而進行字節交換。
使用htonl/ntohl您的操作系統提供
要麼使用您的OS(參見馬丁·貝克特的回答)所提供的功能,或者,如果你正在尋找一種方式來做到這一點的興趣,你可能有興趣在以下代碼片段中:
x = (x & 0x0000FFFF) << 16 | (x & 0xFFFF0000) >> 16;
x = (x & 0x00FF00FF) << 8 | (x & 0xFF00FF00) >> 8;
是的,爲了完成字節交換,需要第二行:'x =(x&0x00FF00FF)<< 8 | (x&0xFF00FF00)>> 8;' – bames53 2012-07-09 14:45:04
@ bames53是的,你是對的!對於那個很抱歉! – 2012-07-09 14:48:30
如果本機格式與網絡格式相反,則只會交換字節。 – 2012-07-09 14:40:47
@MikeSeymour是真實的,但這很可能是用戶需要的。任何編寫低級別非網絡訂單驅動程序的人都可能知道如何去做。這似乎是一個很好的99%的答案 – 2012-07-09 14:41:26
嗯實際上,我正在寫一個低層次的非網絡訂單驅動程序......雖然如此,但我的頭腦還是如此。我理解這個概念,但我習慣於高級語言。 – user1496413 2012-07-09 16:04:30