如何接收十六进制的套接字输入?

How can I receive to socket input as hexadecimal?

我用套接字发送了一条 GET 消息。我收到了字符串形式的响应消息。但我想以十六进制形式接收。但是我没有实现。这是我的代码块作为字符串。你能帮帮我吗?

                    dos = new DataOutputStream(socket.getOutputStream());
                    dis = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                    dos.write(requestMessage.getBytes());
                    String data = "";                       
                    StringBuilder sb = new StringBuilder();
                    while ((data = dis.readLine()) != null) {
                            sb.append(data);
                    }

当您使用 BufferedReader 时,您将获得 String 格式的输入..所以更好的方法是使用 InputStream...

这是实现此目的的示例代码。

        InputStream in = socket.getInputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] read = new byte[1024];
        int len;
        while((len = in.read(read)) > -1) {
            baos.write(read, 0, len);
        }
        // this is the final byte array which contains the data
        // read from Socket
        byte[] bytes = baos.toByteArray();

获得 byte[] 后,您可以使用以下函数将其转换为十六进制字符串

StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%02X ", b));
}
System.out.println(sb.toString());// here sb is hexadecimal string

引用自java-code-to-convert-byte-to-hexadecimal