Java byte数据类型的无符号数处理

今天在用java处理单片机上传的数据进行数据交互测试时,在处理一个byte数据的时候,卡了好一会儿,写个笔记,给大家避坑。

Java byte数据类型

在 Java 中,byte 是一种原始数据类型,它占用 8个比特位(即 1 个字节)的存储空间。由于 byte 类型是一个有符号类型,因此它的取值范围为 -2^7 ~ 2^7-1,即 -128 ~ 127。

这也就是说,Java 中的 byte 类型使用了最高 bit位 作为符号位,其余 7 位表示数值,因此它的最高位(最左侧位)表示符号,最高位为 0 表示正数,最高位为 1 表示负数,所以它的范围是从 -128 到 127。

所以我在做数据帧帧头判断时,是这么判断的

byte[] Buffer = new byte[512];
......
if(Buffer[0] == 0xA8)
{
    ...
}

 结果发现,条件进不来,一时不知道是何原因。

调试的时候发现,Buffer[0]的值是-88.是个有符号数。所以,可以知道,当结果大于127的时候,都会以负数的形式显示。串口ttl,或者485总线传输的时候的时候,往往使用的都是 MODBUS RTU类型,数据类型都是无符号整数型的。一个字节的取值范围就是0~255。所以需要做一个类型的转换才能使的等式成立。

比如:

if(buffer[0] == (byte)0xA8)//进行类型转换
{
    ...
}

以上仅做参考,方法有很多,我这里只是为了方便对我的字节流进行处理。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值