JAVA读取大于ASCII码大于128的字符问题

来源:互联网 发布:普中科技单片机教程 编辑:程序博客网 时间:2024/05/16 12:58

        近来在做一个基于电脑和手机交互的基于图像的三维绘制东西,一直习惯于C++的直接读写操作CHAR类型,发现在JAVA客户端用BufferedReader读取发送来的CHAR类型数据时,当发送的CHAR类型的数据的ASCII码大于128时,读取的CHAR类型的值变为65536。

查了查发现,问题是:编码方式不同,JAVA 的字节 转变为CHAR时只能l转换0-128,而C++这面数据发送的是0-256,当使用BufferedReader进行读取时,读取一个字节的数据,但这个字节的数据大于128时会发生溢出,转变为二字节的最大值65536。对JAVA方而的东西不太了解,就使用了个可能很笨的方式来读取这些ASCII码大于128的字符。直接使用字节流读取方式读取字节流,然后将字节转化为INT类型,即为C++中CHAR类型的ASCII码,就可以对这些图像数据进行处理了。

inputStream = mSocketClient.getInputStream(),

inputStream.read(buffer3)//读取发送的来的数据

    sumOfData = buffer3[0]&0xff;//字节转化为INT

0 0
原创粉丝点击