有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中io网络字节顺序到主机字节顺序

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

来自C服务器的响应-

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^A^A^B^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^A^@^@^@^K^@^@^@^@^@^@^@^@^@^@^@<80>^@^@^@^@^@^@^BÃ^@^@^@^AYour request is successfully registered with us and is under processing.^@^@^@^@^D^@^@^@^@^@^@^@¨ýf^@^@^@^@^@mX@^@^@^@^@^@^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H

我不知道如何解释不可读的字节,当转换为十六进制时,大多数字节是null,但很少有像^H^A等那样充满数据。。你能帮我找到解决这个问题的办法吗


共 (1) 个答案

  1. # 1 楼答案

    假设你有一个java。尼奥。要从中读取,可以使用字节缓冲进行转换:

    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();