所以我有變量:如何將單個字節放入網絡字節順序?
uint8_t version = 1;
uint8_t ttl = 1;
uint16_t payload_length =
uint32_t account_identifier = 24027;
uint32_t source_address = 0;
uint32_t destination_address = 0;
uint16_t checksum = 0;
uint16_t protocol = 1;
我想在網絡字節順序的所有值。
我知道使用htons()
爲16位值,htonl()
爲32位值。
所以我會做:uint32_t source_address = htonl(0);
和uint16_t checksum = htons(0);
我應該怎麼使用的8位值?
字節中的位字節順序如何,是MSB0還是LSB0。注意bigendian系統同時具有代表 – 2014-10-21 03:01:30
@bare_metal:你不能在你的代碼中尋址一個位。 [Bit endianness](http://en.wikipedia.org/wiki/Endianness#.22Bit_endianness.22)一般只適用於通過串行介質的物理傳輸,在這些情況下直接由協議和硬件本身處理(即802.3和802.11)。就C代碼而言,由於無法尋址單個位,所以不存在位順序。字節順序是字節如何打包和處理的問題;如果你不能解決它,它沒有endianness。由於你不能處理位,所以沒有有效的位級別。 – Cornstalks 2014-10-21 03:28:35
假設我們將一個字節從一個大型機器傳輸到另一個大型機器,並考慮一個MSB0位表示,另一個LSB0位表示如何處理? (http://en.wikipedia.org/wiki/Bit_numbering)。並且RFC建議的樣式是MSB0 – 2014-10-21 03:33:07