我发送了一个带套接字的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);
}
答案 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
的参考资料