在使用该短路上的htons后,将2字节短(正常短路)转换为2字节字符串(char *)的任何方法。问题是htons方法返回一个int(4个字节),我怎么把它放到一个2字节的字符串中???
注意:我需要能够在结果上使用ntoh来获取原始值。
感谢您的建议:D
答案 0 :(得分:3)
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';