<分区>
字节值在0到255之间,非常简单明了。然而,Java 并不这么认为,并决定将值介于 -128 和 128 之间,这毁了我和许多其他人的生活。
我只想知道有什么好主意?为什么每次我需要获取无符号字节值时都必须这样做:
int byteValue = (int) javaByte & 0xFF;
标签 java
<分区>
字节值在0到255之间,非常简单明了。然而,Java 并不这么认为,并决定将值介于 -128 和 128 之间,这毁了我和许多其他人的生活。
我只想知道有什么好主意?为什么每次我需要获取无符号字节值时都必须这样做:
int byteValue = (int) javaByte & 0xFF;
最佳答案
Java 只支持有符号整数。 byte
也是整数,所以 Java 在这里是一致的。
这不是 C 的情况,例如 char
类型没有定义它是 signed
还是 unsigned
。你需要明确告诉。在我看来,这比说它默认为 signed
更糟糕。
无论如何,C 中 char 的初衷是一个字符串字符,其中 unsigned 有意义。在 Java 中,字符串字符有不同的类型 - char
。
关于java - Java 中的带符号字节,有什么好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36362998/