【发布时间】:2014-08-06 19:14:03
【问题描述】:
我的 Socket 客户端是用 C 编写的,并以以下格式发送值:
x00\x2C\x02\x00\xE0\x00
现在我想从用 Java 编写的 TCP/IP 套接字服务器读取十六进制值。
在 Java Socket 中读取流值的方法应该是什么?
我正在尝试按以下方式阅读,但它不起作用:
InputStream ins = sock.getInputStream();
int byteRead;
while((byteRead = ins.read()) != -1) {
System.out.println(Integer.toHexString(byteRead & 0xFF));
}
【问题讨论】:
-
查看
Socket输入(输出)流。通过网络传输的数据始终是二进制的,因此它只取决于您在接收端如何解释它。 -
尝试阅读如原帖所示。
-
“下面的格式”实际上就是一个“格式”。数据仍然是二进制的。它是六个字节,值
0x002C0200E000.你可以用DataInputStream.readShort()/.readInt()读取。 -
你可以使用 Integer.parseInt(hexString, 16) ,正如你在stackoverflow.com/questions/3834468/…中看到的那样
-
你的意思是发件人实际上是在发送一个包含十六进制表示的字符串?在这种情况下,您应该将字符串转换为整数,而不是其他方式。