为什么以下不起作用?我将一个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;
答案 0 :(得分:3)
在Java中,移位运算符返回int
值,即使移位的数量为byte
。你需要在整个表达式周围将转换包装到byte
:
pixels[iter++] = (byte) (c.getRed() << 7);
pixels[iter++] = (byte) (c.getGreen() << 7);
pixels[iter++] = (byte) (c.getBlue() << 7);