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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值