所以我有变量:如何将单个字节放入网络字节顺序?
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