关于java接收超出范围的数值问题 比如说仪器通过串口发送一组字节数据,0xEF, 0xEE, 0xCD,(这些字节超出了java中的byte表示范围)java用byteInputStream()去去读取的话,会怎么处理,是报错,还是将其转换成byte型的字节数组接收?帮帮忙啊,谢谢啦! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ByteArrayInputStream 这个类可以进行读取操作,在JDK的帮助文档中明确的写出,我们在进行构造字节流的时候可以用一个字节数组作为参数,ByteArrayInputStream(byte[] buf) ,也就是把流中的数据读到数组中.你可以看看JDK的帮助稳定在InputStream类中都写出来啦. 我想知道的是对于输入的byte数值超出java中定义的byte表示范围,java会怎么处理,报错还是正常接收,比如将0xff转化为0x01. 既然你发送的数据超出了byte的范围,那说明可以把它分为几个byte来读如一个汉字就可以分两个字节来读。 不是这样的,串口通信之间传的字节,但归根结底还是传的二进制数,比如远程端口传送一个字节0xFF,转换成二进制值是11111111,这边主机在串口接收到的也是11111111,其实还是0xFF,但是java中的byte表示范围是127~-128,所以我就有疑问,接收到的这个字节java会怎么处理,报错还是将这个字节表示成-1. byteArrayInputStream()内部会用一个Byte数组来接受这些数据,显然会出现数据类型不相同,那它是怎么处理?是抛出异常,还是强制转换? 我觉得这不应是java的ByteArrayOutputStream做的事情,而是程序员还怎么处理,因为ByteArrayOutputStream它只接收一个字节数组,只要你提供给它一个这样的数组就可以了,那么这个数组还是得你来提供的。 因为java里没有无符号数,所以0xFF读出来就是-1。ps:这个问题其实你试一下就知道了 读取时不会出错,但是你要对读取后的数据进行处理,即把四个byte组成一个int。 探讨java中获取局域网中的上线IP的思路..... java如何改变已定范型?急求!!! JDBC连接ORACLE奇怪问题 求JAVA游戏的大手帮忙看一下这个源代码要怎么运行,帮忙的同志薪水翻倍,再不加班~ 【请教】如何限制日期类的内容? 我运行一个java怎么老是出错!!!急啊!!! 怎么实现文件的保存? 如何在JAVA程序里打开硬盘中的文件? 应聘中间件开发人员时碰到的两到面试题!!! 关于visualAge 3.5的问题 100以内所有可以加为100的整数的组合 ireport 关于背景图片的奇怪问题!不知道有人知道吗?【有图片】有原码
那它是怎么处理?是抛出异常,还是强制转换?
那么这个数组还是得你来提供的。
因为java里没有无符号数,所以0xFF读出来就是-1。
ps:这个问题其实你试一下就知道了