risc-v中文社区

 找回密码
 立即注册
查看: 1308|回复: 0

[原创] Java中对于unsigned byte类型的转换处理

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-9-9 16:45:10 | 显示全部楼层 |阅读模式
java中本来没有unsigned byte这么一种数据类型,只有对应的byte类型,当然,byte范围是-128~127,但我们知道一个字节可以表达0~255,可java将byte的最高bit当作符号位了,所以,我们在通信缓冲区中处理数据时,有可能需要将一个byte当作"unsigned byte"来对待,
那怎么处理呢?
byte rawbytedata = -1; //-1其实就是1111 1111
int unsignedintdata = rawbytedata & 0xFF;
下面,具体说明这样做的原理。
0xff 表示为二进制就是 1111 1111。在signed byte类型中,代表-1;但在short或者int类型中则代表255.
当把byte类型的-1赋值到short或者int类型时,虽然值仍然代表-1,但却由1111 1111变成1111 1111 1111 1111.
再将其与0xff进行掩码:
-1: 11111111 1111111
0xFF: 00000000 1111111
255: 00000000 1111111
所以这样,-1就转换成255.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-24 06:41 , Processed in 0.016011 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表