您的位置:首页 > 编程语言 > Java开发

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

2013-11-29 17:34 525 查看
各种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.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐