1

次のように UDP パケットを取得します。

<<83,65,77,80,188,64,171,138,30,120,105,0,0,0,10,0,4,0,0,0,84,101,115,116,15,0,0,0,82,101,122,111,110,101,32,82,111,108,101,80,108,97,121,11,0,0,0,83,97,110,32,65,110,100,114,101,97,115>>

最初の 11 バイトを削除できることがわかっていて、12 ~ 13 バイトにサーバー上でオンラインになっているプレイヤーの数 (バイト幅は 2) が含まれていることがわかっている場合、パケットをデコードするにはどうすればよいですか?

UPD
間違ったパケットを送信したのかもしれません...
SAMP クエリ
だから、私は送信します:

<<$S,$A,$M,$P,188,64,172,136,7808:16,$i>>

サーバー188.64.172.136:7808の場合、取得します

<<83,65,77,80,188,64,172,136,30,128,105,0,0,0,10,0,4,0,0,0,84,101,115,116,15,0,0,0,82,101,122,111,110,101,32,82,111,108,101,80,108,97,121,11,0,0,0,83,97,110,32,65,110,100,114,101,97,115>>
4

2 に答える 2

2

ビット構文と巧妙なパターン マッチングを使用して、結果を取得できます。

<<_:11/bytes, NumberOfPlayers:16/integer-big, _/binary>> = <<83,65,77,80,188,64,171,138,30,120,105,0,0,0,10,0,4,0,0,0,84,101,115,116,15,0,0,0,82,101,122,111,110,101,32,82,111,108,101,80,108,97,121,11,0,0,0,83,97,110,32,65,110,100,114,101,97,115>>,
NumberOfPlayers.
于 2012-06-28T10:12:08.283 に答える
1

パケット バイナリが に格納されているP場合は、次のようなことができます (ビッグ エンディアンを想定):

<<NumberOfPlayersOnline:16/big>> = binary:part(P,11,2).

結果は ですNumberOfPlayers

于 2012-06-28T10:07:19.430 に答える