0

为什么以下不起作用?我将一个 int 转换为一个字节,然后将这些位移动 7。我没有看到任何问题。

但是,我收到错误消息“可能丢失精度......需要:字节;找到:int”

pixels是一个字节数组,c是一个 Color 对象,iter是一个整数。

pixels[iter++] = ((byte) c.getRed()) << 7;
pixels[iter++] = ((byte) c.getGreen()) << 7;
pixels[iter++] = ((byte) c.getBlue()) << 7;
4

1 回答 1

3

在 Java 中,移位运算符返回一个int值,即使被移位的数量是 a byte。您需要将演员表包裹byte在整个表达式周围:

pixels[iter++] = (byte) (c.getRed() << 7);
pixels[iter++] = (byte) (c.getGreen() << 7);
pixels[iter++] = (byte) (c.getBlue() << 7);
于 2013-05-28T01:05:19.903 回答