0

我一直在解释从 C 服务器到我的 java 应用程序的响应。希望 C 服务器以 BIG_ENDIAN 格式响应我的 java,我的问题是如何将响应转换为Integer. 我正在粘贴从 C 服务器获得的响应,并想知道如何在 java 中执行“be64toh”函数。

来自 C 服务器的响应 -

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^A^A^B^@^@ ^@^N^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^A^@^@^@ ^K^@^@^@^@^@^@^@^@^@^@^@<80>^@^@^@^@^@^@^BÃ^@^@^@^A您的要求已成功注册并正在处理中。^@^@^@^@^D^@^@^@^@^@^@^@¨ýf^@^@^@^@^@mX@^ @^@^@^@^@^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H

我不知道如何解释不可读的字节,当转换为十六进制时,它们中的大多数都是,但其中很少有人像等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 回答