3
我想解析我收到的TCP包的头文件。没有htonl/ntohl的联盟和排序
假设这是一个头结构:
(2 bytes for commands) + (2 bytes for token) + (4 bytes for data length)
Example of package: 0x01 0x02 0x12 0x34 0x00 0x00 0x00 0x05
There 0x0102 is command, 0x1234 is token and 0x000005 is data length.
我想分析在Windows平台上有效途径这个头。我做了下一个共用此头:
typedef union
{
struct
{
uint16_t command;
uint16_t token;
uint32_t data_length;
} field;
char bytes[8];
} MyHeader_t;
MyHeader_t bar;
read_8_bytes(bar.bytes);
std::cout << bar.fields.token << std::endl;
接下来,我尝试了上述复制包到我的bytes
阵列。但是网络包是大端的,PC试图把字段看作小端。因此,我的token
字段等于0x3412
(而不是0x1234)。
我怎样才能避免单独endiannes这个问题?
很高兴展示一个例子,OP的问题可以如何用该库来解决。 –
'std :: cout << boost :: endian :: endian_reverse(bar.field.token)<< std :: endl;' – AndyG