0

C サーバーから Java アプリケーションへの応答を解釈するのに苦労しています。C サーバーが私の Java に BIG_ENDIAN 形式で応答することを期待して、私の質問は、応答をInteger. C サーバーから取得した応答を貼り付けて、Java で「be64toh」機能を実行するにはどうすればよいか考えています。

C サーバーからの応答 -

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^A^A^B^@^@ ^@^N^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^A^@^@^@ ^K^@^@^@^@^@^@^@^@^@^@^@<80>^@^@^@^@^@^@^BÃ^@^@^@^Aあなたの要求は正常に登録され、処理中です。^@^@^@^@^D^@^@^@^@^@^@^@¨ýf^@^@^@^@^@mX@^ @^@^@^@^@^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H

読み取り不可能なバイトを解釈する方法がわかりません。16 進数に変換すると、ほとんどのバイトが. などnullのようなデータで埋められ^Hます^A。この問題の解決策を教えてください。

4

1 に答える 1

4

読み取る java.nio.SocketChannel があるとします。ByteBuffer を使用して変換を行うことができます。

private static final int BUFFER_SIZE = 1024;

ByteBuffer readBuffer = ByteBuffer.allocate(BUFFER_SIZE).order(ByteOrder.BIG_ENDIAN);
int bytesRead = socketChannel.read(readBuffer);
readBuffer.flip();

これで、バッファからデータを読み取ることができます。たとえば、次のようになります。

int someInt = readBuffer.getInt();
long someLong = readBuffer.getLong();
于 2012-07-17T11:55:22.730 に答える