我需要能够将数值发送到远程套接字服务器,因此我需要将可能的数字编码为字节。如何将数值编码为字节
这些数字最多为64位,即最多需要8个字节。第一个字节是类型,它始终是255以下的数字,因此适合1个字节。
例如,如果数字是8并且类型是32位无符号整数,那么类型将是7,它将被复制到第一个(最左边的)字节,然后接下来的4个字节将用实际数字(在这种情况下为8)。
所以以字节为单位:
byte1: 7
byte2: 0
byte3: 0
byte4: 0
byte5: 8
我希望这是决策意识。
执行此编码的代码看起来是否合理?
int type = 7;
uint32_t number = 8;
unsigned char* msg7 = (unsigned char*)malloc(5);
unsigned char* p = msg7;
*p++ = type;
for (int i = sizeof(uint32_t) - 1; i >= 0; --i)
*p++ = number & 0xFF << (i * 8);
[不要在C中输入'malloc'的结果](http://stackoverflow.com/q/605845/995714) –