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

时间:2015-05-16 11:54:57

标签: java android sockets http binary

我发送了一个带套接字的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);
                    }

1 个答案:

答案 0 :(得分:3)

当您使用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

的参考资料