在该短片上使用 htons 后,任何将 2 字节短片(普通短片)转换为 2 字节字符串(char*)的方法。问题是 htons 方法返回一个 int(4 个字节),我如何将它放入一个 2 个字节的字符串?
注意:我需要能够对结果使用 ntohs 来获得原始值。
感谢您的建议:D
ahm,怎么说htons返回一个4字节的整数,在我的linux上,htons的原型是
uint16_t htons(uint16_t hostshort);
这样你就可以做到
uint16_t value;
value = htons(hostshort);
char *bytes = &value;
// now the first 2 bytes pointed to by "bytes" are the value in network byte order
这意味着返回值只有 2 个字节。
然后我认为在 htons 之后,返回值的这种位表示是这样的,即值的第一个字节 (((unsigned char *)value)[0]) 是最重要的,第二个是最不重要的。
short i;
// ...
char s [3];
s [0] = (i >> 8) & 0xFF;
s [1] = i & 0xFF;
s [2] = '\0';