各种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.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.