0

以下が機能しないのはなぜですか?int をバイトにキャストし、ビットを 7 だけシフトします。問題はありません。

ただし、「possible loss of precision... 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;
4

1 に答える 1

3

Java では、シフトintされる数量が であっても、シフト演算子は値を返しますbytebyteキャストを式全体にラップする必要があります。

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