java socket发送十六进制字节内容发生变化的问题解决

各种IO的错误使用.

今天遇到的这个问题搁置了一两个小时.还真是不该.

我发送的如下的内容:

0d 0d 07 80 00 01 01 02 03 04 05 06 07 08 0d 里面的80总是显示不正确.只要是大于80的数值的十六进制数,都是显示错误的.

我很疑惑.

这里最终得到了解决.但是其中的一些经历记下来.

我到这时候才明白, JAVA里面的char是2字节的.byte是1字节的.

因此里面改用byte的.如果用了char然后又强制转换的要谨慎.调试器里面的字符赋值0x80  [\uff80],字节0x80的显示  [0x80]


我的这次编程用到socket读取数据之前用的是下面这一类的.我换了各种类型的.发现有编码之类的问题.其实我只想要原来的字节内容.

BufferedReader mBufferedReaderClient
mBufferedReaderClient = new BufferedReader(
new InputStreamReader(mSocketClient.getInputStream()));
if ((count = mBufferedReaderClient.read(buffer)) > 0)


最后找到的解决办法是,用最原始的

int rcvLength;

byte[] buff = new byte[1024];
InputStream inputStream = mSocket.getInputStream();

while ((rcvLength = inputStream.read(buff)) > 0)
{


这里就得到byte数组了.

这些都怪我之前没有学过用过java.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零点零一

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值