Java 中的字节默认是有符号的。我在其他帖子中看到,具有无符号字节的解决方法类似于:int num = (int) bite & 0xFF
有人可以向我解释一下为什么它会起作用并将有符号字节转换为无符号字节,然后将其转换为相应的整数吗?ANDing
一个字节与 11111111 会产生相同的字节 - 对吗?
类型转换的优先级高于&
操作员。因此,您首先要转换为 int,然后进行 AND 运算以屏蔽所有设置的高位,包括 java 使用的二进制补码表示法的“符号位”,只留下以下正值原始字节。例如。:
let byte x = 11111111 = -1
then (int) x = 11111111 11111111 11111111 11111111
and x & 0xFF = 00000000 00000000 00000000 11111111 = 255
并且您已经有效地从原始字节中删除了该符号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)