java - 解决所有 Java 字节都已签名这一事实的最佳方法是什么?

标签 java byte unsigned signed

在 Java 中,没有无符号字节这种东西。

处理一些低级代码时,有时您需要处理无符号值大于 128 的字节,这会导致 Java 将它们解释为负数,因为 MSB 用于符号。

有什么好的方法可以解决这个问题? (说不使用 Java 不是一种选择)

最佳答案

如果你这样做,实际上可以去掉 if 语句和加法。

byte[] foobar = ..;
int value = (foobar[10] & 0xff);

这样,Java 不会将字节解释为负数,也不会翻转整数上的符号位。

关于java - 解决所有 Java 字节都已签名这一事实的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088/

相关文章:

c++ - unsigned char 类型变量的 I/O 失败

java - 一段时间后AsyncTask setMessage android java

java - Java 8 中流的笛卡尔积作为流(仅使用流)

python - 我正在编写一个程序将文件复制到另一个目录中,但复制的名称不一样

java - 从二进制文件将 2 字节(无符号短)转换为 Java 短

java - Java char 对于算术来说是有符号的还是无符号的?

java - JAXB,xs :any and targetNamespace

c# - 我如何在 html5 中使用 zxing?

c++ - 谁决定一个字节的大小,是编译器还是CPU?

java - 在 Java 中使用 char 作为无符号的 16 位值?