如何接收十六进制的套接字输入?
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
我用套接字发送了一条 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