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.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.
今天遇到的这个问题搁置了一两个小时.还真是不该.
我发送的如下的内容:
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.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.
相关文章推荐
- 解决MFC项目使用多字节字符集后软件界面风格发生改变的问题
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题
- 解决连接vcenter (客户端无法向服务器发送完整的请求。(基础连接已经关闭:发送时发生错误。)) 问题
- 用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
- .net服务器向j2me客户端发送字节流,在穿过cmwap网-关时字节流的内容发生变化,为什么?
- 更改邮件发送语言为英语,解决编码为UTF8邮箱注册账号,邮件内容乱码问题
- 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- 用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- 解决hyerv的linux虚拟机网卡地址重启发生变化的问题
- 解决lrs_set_send_buffer(char *s_desc,char *buffer,int size);内容发送问题
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题
- Java 使用 Velocity 发送邮件中文内容乱码问题的解决办法
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- .net服务器向j2me客户端发送字节流,在穿过cmwap网­关时字节流的内容发生变化,为什么?
- 解决逻辑导出后SEQUENCE的值发生变化的问题
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题