【发布时间】:2011-08-09 07:01:57
【问题描述】:
我有一个签名值,例如-7368817
当我将其转换为字节时,它将类似于:-113
我将它转换为无符号字节再见& 0xff,它将类似于 143
现在我操纵这个字节值,然后我想完全回来!获取新字节的有符号整数。 :)
更新
整个故事:
我有一个 8 位深度和灰度的图像!这意味着所有像素都使用 1 字节呈现
BufferedImage image = ImageIO.read(new File("my_grayscal_8bit_photo.jpg"));
int intPixel = image.getRGB(1, 1);
现在我需要对这个像素进行一些位操作,但由于它是 int 我必须先将其转换为字节:
byte bytePixel = (byte) intPixel;
并使其无符号:
int intPixel2 = bytePixel & 0xff;
现在我进行位操作,并希望将其转换为 int 并执行以下操作:
image.setRGB(1, 1, neworiginalint);
【问题讨论】:
-
我假设你知道 java 没有无符号类型(除了 char)
-
而且一个字节只能保存 256 个值,即 2^8 作为它的 8 位。恕我直言,如果您愿意,您可以将字节用作无符号,您不会从 Java 中获得太多帮助。
-
最后一次从 byte 转换为 int 的结果应该是什么?由于 byte 的整个值范围适合 int 它仍然是 143?您究竟想通过这种转化做什么?
-
顺便说一句:如果您可以将每个可能的值放入 1 字节
byte中,那么拥有 4 字节int的意义何在 ;) -
我知道Java没有无符号类型,所以我把无符号字节放在一个int中。
标签: java byte int pixel unsigned