Java 二进制值为';t从十进制转换为二进制后显示足够的8位

Java 二进制值为';t从十进制转换为二进制后显示足够的8位,java,binary,decimal,rgb,pixel,Java,Binary,Decimal,Rgb,Pixel,我在这里需要编码方面的帮助。我想将RGB值(十进制)转换为二进制值。但只要二进制值前面有“0”位,结果就不会显示“0”位 示例:十进制=94,二进制=0101110。但我的结果显示为1011110 我想为我的程序,图像隐写分析,分析所有的二进制位。如果没有足够的8个二进制位,恐怕会出错 以下是我的密码: public class getPixelData { private static final double bitPerColor = 4.0; public getPixelData(

我在这里需要编码方面的帮助。我想将RGB值(十进制)转换为二进制值。但只要二进制值前面有“0”位,结果就不会显示“0”位

示例:十进制=94,二进制=0101110。但我的结果显示为1011110

我想为我的程序,图像隐写分析,分析所有的二进制位。如果没有足够的8个二进制位,恐怕会出错

以下是我的密码:

public class getPixelData 
{
private static final double bitPerColor = 4.0;

public getPixelData()
{

}

public int[] getPixelData(BufferedImage img, int w, int h) throws IOException
{
    int argb = img.getRGB(w, h);
    int rgb[] = new int[]
    {
        (argb >> 16) & 0xff, //red
        (argb >>  8) & 0xff, //green
        (argb      ) & 0xff  //blue
    };

    int red = rgb[0];
    int green = rgb[1]; //RGB Value in Decimal
    int blue = rgb[2];

    System.out.println("\nRGBValue in Decimal --> " + "\nRed: " + red + " Green: " + green + " Blue: " + blue);

    //Convert each channel RGB to Hexadecimal value
    String rHex = Integer.toHexString((int)(red));
    String gHex = Integer.toHexString((int)(green));
    String bHex = Integer.toHexString((int)(blue));

    System.out.println("\nRGBValue in Hexa --> " + "\nRed Green Blue " + rHex + gHex + bHex);

    //Convert each channel RGB to binary
    String r4bit = Integer.toBinaryString((int)(red));
    String g4bit = Integer.toBinaryString((int)(green));
    String b4bit = Integer.toBinaryString((int)(blue));

    //Convert concatonate 0's in front to get desired bit count
    int rDifference = (int)bitPerColor - r4bit.length();
    int gDifference = (int)bitPerColor - g4bit.length();
    int bDifference = (int)bitPerColor - b4bit.length();

    //this code should work but i guess it isn't
    for (int i = rDifference; i > 0; i--)
    {
        r4bit = "0" + r4bit;
    }

    for (int i = gDifference; i > 0; i--)
    {
        g4bit = "0" + g4bit;
    }

    for (int i = bDifference; i > 0; i--)
    {
        b4bit = "0" + b4bit;
    }


    System.out.println("\nRGB Value in binary (Red) is: " + r4bit);
    System.out.println("RGB Value in binary (Green) is: " + g4bit);
    System.out.println("RGB Value in binary (Blue) is: " + b4bit);

    return rgb;
    }
    }
我应该在这里添加什么代码?仅供参考,我对Java语言还是新手。如果我在这里犯了错误,请纠正我


谢谢

你不需要除以幂吗

float power = Math.pow(2, 4);
String r4bit = Integer.toBinaryString((int)(red/power));
String g4bit = Integer.toBinaryString((int)(green/power));
String b4bit = Integer.toBinaryString((int)(blue/power));

您需要自己用0填充它们。如果我没弄错的话,这里有一个类似的问题:

我以前做过。它没有显示完整的8个二进制位。只显示前4个二进制位,我读过了,我不太懂代码。你能指导我如何用0位填充它吗?