gpt4 book ai didi

java - 二进制值从十进制转换为二进制后未显示足够的 8 位

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:28 25 4
gpt4 key购买 nike

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

示例:十进制 = 94,二进制 = 0101 1110。但我的结果显示为 101 1110。

我想分析我的程序图像隐写分析的所有二进制位。如果没有足够的 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));

关于java - 二进制值从十进制转换为二进制后未显示足够的 8 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com