1
私はJavaを学習しており、ピクセルからRGB情報を取得しようとしています。私は、しかし、私は、元のgetRGB()値をプリントアウトするとき、私はマイナス記号で不完全な2進数を取得する理由を理解したいと思い、そうするために管理:誰かがgetRGB()メソッドのバイナリ出力を理解する助けになることができますか?
-100110011001100110011010
これは私のコードです:
import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class MyImage {
public static void main(String[] args) throws IOException {
BufferedImage img = null;
File f = null;
try {
f = new File("D:\\preview.jpg");
img = ImageIO.read(f);
} catch (IOException e) {
System.out.println(e);
}
int p = img.getRGB(0, 0);
int a = (p >> 24) & 0xff;
int r = p >> 16 & 0xff;
int g = p >> 8 & 0xff;
int b = p & 0xff;
System.out.println(a + " " + r + " " + g + " " + b);
System.out.println(Integer.toString(a, 2) + " " + Integer.toString(r, 2) + " " + Integer.toString(g, 2) + " "
+ Integer.toString(b, 2));
System.out.println(Integer.toString(p, 2)); // why this number?
}
}
出力:
255 102 102 102
11111111 1100110 1100110 1100110
-100110011001100110011010
あなたはそれが読めるより人間になりたい場合は、RGB値 –
こんにちはランスに '' Integer.toHexString(...)を呼び出すことができ、ありがとう、あなたのアドバイスを理解するために私を助けました私の混乱は 'Integer.toHexString()'や 'Integer.toBinaryString()'の代わりに 'Integer.toString()'を使って 'getRGB()'の値を可視化したためです。 –