为了账号安全,请及时绑定邮箱和手机立即绑定

单字节读取时Integer.toHexString(b) 批量读取时Integer.toHexString(buf[i]&0xff)

为什么单字节读取不用&0xff   批量读取时却要用呢   不明白  求解

正在回答

4 回答

是这样的,

单字节读取时Integer.toHexString(b)

read 是无符号读取的,就是读取的时候,假如读取的是一个字节 例如 11111111  b的值就是 00000000 00000000

00000000 11111111;

批量读取时Integer.toHexString(buf[i]&0xff) 这个函数的参数是int类型的

buf 是一个字节数组。 假如buf[1]=11111111, 这个 会提升为 11111111 11111111 11111111 11111111,

这样两个int的字节码就不同了

buf[1]&0xff (00000000 00000000 00000000 11111111) 这样就一致了

0 回复 有任何疑惑可以回复我~
#1

昵称是JaVa

为什么buf[1]=11111111, 这个 会提升为 11111111 11111111 11111111 11111111,而不是00000000 00000000 00000000 11111111。什么时候前面补0,什么时候前面会补1啊?
2017-05-25 回复 有任何疑惑可以回复我~

因为每次读取仅仅读取一个字节也就是8位,而单字节就只有8位不需要&0xff,然而批量读取时就需要先读取低八位,再读取高8位

2 回复 有任何疑惑可以回复我~

Java中一个字节是八位么???

0 回复 有任何疑惑可以回复我~

单字节说明就只有8位,就直接是低八位了呀!就不需要&0xff了啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

单字节读取时Integer.toHexString(b) 批量读取时Integer.toHexString(buf[i]&0xff)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信