私はCプログラミングが初めてで、次のようにフォーマットされたUDPパケットを受信して処理するコードをテストしています:
UINT16 port1
UINT16 port2
このテストで対応する値は次のとおりです。
6005
5555
パケット バッファ全体を出力すると、次のようになります。
u^W³^U><9e>^D
どうすればそれを壊して正しい値を得ることができますか? 関数を試してみましuint16_t
たが、うまくいきませんでした。数字が間違っているだけです。次のようなことを試しています。unsigned short
htons
int l = 0;
unsigned short *primaryPort = *(unsigned short*) &buffer[l];
AddToLog(logInfo, "PrimaryPort: %u\n", primaryPort);
l += sizeof(*primaryPort);
unsigned short *secondaryPort = *(unsigned short *) &buffer[l];
AddToLog(logInfo, "SecondaryPort: %u\n", secondaryPort);
l += sizeof(*secondaryPort);
これらの値を取得するための正しい方法または最良の方法は何ですか? これらの 2 つの uint16 値は整数形式ではないと思いuint16
ます。この文字の単なる char テキストだと思うu^W³^U><9e>^D
ので、整数のように処理しているため、おそらく間違った数値を取得しています。しかし、私はすべてを試しましたが、正しい値を取得できません。