2バイトのshort(通常のshort)を、そのshortでhtonを使用した後、2バイトの文字列(char *)に変換する方法。問題は、htonsメソッドがint(4バイト)を返すということです。どうすればそれを2バイトの文字列に入れることができますか?
注:元の値を取得するには、結果にntohsを使用できる必要があります。
アドバイスありがとうございます:D
ああ、どうやって 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 バイトです。
次に、返された値のそのようなビット表現が、値の最初のバイト (((unsigned char *)value)[0]) が最も重要で、2 番目が最も重要でないような htons の後に隔離されていると思います。
short i;
// ...
char s [3];
s [0] = (i >> 8) & 0xFF;
s [1] = i & 0xFF;
s [2] = '\0';