如何从int转换为byte,然后使用bitshift运算符

时间:2013-05-28 01:04:44

标签: java casting colors binary bit-shift

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

但是,我收到错误消息“可能会丢失精度... required:byte; found:int”

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

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

1 个答案:

答案 0 :(得分:3)

在Java中,移位运算符返回int值,即使移位的数量为byte。你需要在整个表达式周围将转换包装到byte

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