解决所有 Java 字节都已签名这一事实的最佳方法是什么?
在Java中,没有无符号字节这样的东西。
使用一些低级代码,有时您需要使用无符号值大于128的字节,这会导致Java将它们解释为负数,因为MSB用于符号。
解决这个问题的好方法是什么?(说不使用Java不是一种选择)
在Java中,没有无符号字节这样的东西。
使用一些低级代码,有时您需要使用无符号值大于128的字节,这会导致Java将它们解释为负数,因为MSB用于符号。
解决这个问题的好方法是什么?(说不使用Java不是一种选择)
实际上,如果您这样做,则可以摆脱if语句和加法。
byte[] foobar = ..;
int value = (foobar[10] & 0xff);
这样,Java就不会将字节解释为负数,也不会翻转整数上的符号位。
从数组中读取任何单个值时,将其复制到短整型或整数级值中,并手动将负数转换为应有的正值。
byte[] foobar = ..;
int value = foobar[10];
if (value < 0) value += 256 // Patch up the 'falsely' negative value
写入数组时,可以执行类似的转换。