2

在该短片上使用 htons 后,任何将 2 字节短片(普通短片)转换为 2 字节字符串(char*)的方法。问题是 htons 方法返回一个 int(4 个字节),我如何将它放入一个 2 个字节的字符串?

注意:我需要能够对结果使用 ntohs 来获得原始值。

感谢您的建议:D

4

2 回答 2

3

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]) 是最重要的,第二个是最不重要的。

于 2012-10-16T19:11:00.473 回答
2
short i;
// ...
char s [3];
s [0] = (i >> 8) & 0xFF;
s [1] = i & 0xFF;
s [2] = '\0';
于 2012-10-16T19:07:32.677 回答