我知道大致上有一些东西..但我的大脑受伤了,我找不到任何东西来做这件事......
我正在尝试通过 unix 套接字发送一个 16 位无符号整数。为此,我需要将 uint16_t 转换为两个字符,然后我需要在连接的另一端读取它们并将其转换回来转换为 unsigned int 或 uint16_t,此时它使用 2bytes 还是 4bytes 并不重要(我运行的是 64 位,这就是为什么我不能使用 unsigned int :)
顺便说一句,我在 C 中这样做
谢谢
最佳答案
为什么不使用掩码和移位将其分解成字节?
uint16_t value = 12345;
char lo = value & 0xFF;
char hi = value >> 8;
(编辑)
在另一端,你用相反的方式组装:
uint16_t value = lo | uint16_t(hi) << 8;
在我的脑海中,不确定是否需要强制转换。
关于将 uint16_t 转换为 char[2] 以通过套接字发送 (unix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13279024/