近来在做一个基于电脑和手机交互的基于图像的三维绘制东西,一直习惯于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
跨平台字符处理

本文探讨了在基于图像的三维绘制应用中,从C++到JAVA跨平台数据传输时遇到的字符编码问题。当ASCII码超过128时,JAVA端出现读取异常,通过直接读取字节流并转换为INT类型解决了这一问题。
335

被折叠的 条评论
为什么被折叠?



