C中的2字节字符串是否为2字节?

时间:2012-10-16 19:05:08

标签: c string byte short htonl

在使用该短路上的htons后,将2字节短(正常短路)转换为2字节字符串(char *)的任何方法。问题是htons方法返回一个int(4个字节),我怎么把它放到一个2字节的字符串中???

注意:我需要能够在结果上使用ntoh来获取原始值。

感谢您的建议:D

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

short i;
// ...
char s [3];
s [0] = (i >> 8) & 0xFF;
s [1] = i & 0xFF;
s [2] = '\0';