Java Tcp Socket通信,部分数据不正确问题
用Java做TCP发送数据的测试。
发现客户端有一部分的数据是错误的。如下图
0xfd变成了c3 bd
0xfe变成了c3 be
0xff变成了c3 bf
任意数据的范围只能在0x00 - 0x79中,只要大于等于0x80(十进制的128)就会将这个十六进制解析成两组有点奇怪的数字。
能不能让0xfd,就显示fd; 0xfe就显示fe。
我用的一个测试工具就是可以的
这是数据
int[] buffer = {0xfd, 0Xfe, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0Xff};
这是发送消息的方法。
几个抓包工具抓到的内容都是一样的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你用wireshark抓包看看呢,我并不没出现这个问题呢,看图
没有按照预想的那样完成解析,是因为客户端的数据读取方式为小端模式,而java默认采用大端模式。
如下是小端数组转化为大端int数的示例:采用字符串表示的16进制数来转换为Integer的api。