我很难解释从C服务器到我的java应用程序的响应。希望C服务器以BIG_ENDIAN格式响应我的java,我的问题是如何将响应转换为Integer
。我正在粘贴我从C服务器得到的响应,并想知道如何在java中执行“be64toh”功能。
来自C服务器的响应 -
^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ H ^ @ ^ @ ^ @ ^ @ ^ @ ^ A ^ A ^ B ^ @ ^ @ ^ @ ^ N ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ H ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ K ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @< 80> ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ BA ^ @ ^ @ ^ @ ^ AYour 请求已成功注册,我们已经注册 处理。^ @ ^ @ ^ @ ^ @ ^ d ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @¨ýf^ @ ^ @ ^ @ ^ @ ^ @ MX @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ N ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ 1 H
我不确定如何解释不可读的字节,当转换为十六进制时,大多数都是null
但很少有像^H
^A
那样填充数据等等。你能帮我找到解决方案。
答案 0 :(得分: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();