gpt4 book ai didi

c - 如何将数值编码为字节

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:58 25 4
gpt4 key购买 nike

我需要能够将数值发送到远程套接字服务器,因此我需要将可能的数字编码为字节。

数字最多为 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);

最佳答案

您需要显式转换 type 以避免警告:

*p++ = (unsigned char) type;

你想先用最高有效字节对数字进行编码,但你在错误的方向上移动。循环应该是:

for (int i = sizeof(uint32_t) - 1; i >= 0; --i)
*p++ = (unsigned char) ((number >> (i * 8)) & 0xFF);

否则看起来不错。

关于c - 如何将数值编码为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com