这是一项家庭作业,我无法包裹头部。我必须手动完成,所以我不能使用“getBytes()”。此外,我必须首先转换为十进制格式,然后将十进制转换为ASCII(例如,以十进制格式{0,1,1,0,0,0,1,0} = 98,这是'b')。 。我已经将二进制代码排列成一个数组,并希望使用for循环遍历数组的位置。但是,我不确定我是否为for循环使用了正确的参数,并且不确定如何将代码划分为“8”的位。另一件事,如何将十进制值转换为ASCII?我应该列出所有可能的字母,我知道我会得到,然后使用if-else循环引用它们?或者我可以只将小数转换为char?这是到目前为止我的代码......(这是一个有点乱,抱歉)如何在JAVA中将二进制值转换为ASCII?
class Decoder
{
public void findCode(Picture stegoObj)
{
Pixel pixTar = new Pixel(stegoObj,0,0);
Pixel [] pixelArray = stegoObj.getPixels();
int blueVal = 0;
for(int length = 0; length < pixelArray.length; length++)
{
blueVal = pixTar.getBlue();
}
System.out.println(blueVal);
stegoObj.explore();
}
public void decode(int [] binary)
{
int binaryLen = binary.length;
int totVal = 0;
int newVal = 0;
int bitVal = 0;
for(int x = binaryLen - 1; x >= 0; x--)
{
bitVal = binary[x];
int exp = x - (binaryLen - 1);
totVal += (pow(bitVal, exp));
}
System.out.println(totVal);
}
}
public class DecodeImage
{
public static void main(String[] args)
{
Picture stegoObj = new Picture("SecretMessage.bmp");
Decoder deco = new Decoder();
int[] binArray = {0,1,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,0,0,0,0,1,0,1,0};
//int[] binArray = {0,1,1,0,0,0,1,0};
//deco.findCode(stegoObj);
deco.decode(binArray);
}
}
编辑:
好了,所以我想通了很多本,类解码器下,在解码块,在for循环:
for(int x = binaryLen - 1; x >= 0; x--)
{
bitVal = binary[x];
preVal = bitVal * base;
totVal += preVal;
base = base * 2;
}
对不起,不知道如何回复。我将编辑我的帖子... – Hotsaucejalapeno 2013-02-27 03:18:30
谢谢!我无法弄清楚这一点,并为我节省了大量代码。 – Hotsaucejalapeno 2013-02-27 18:03:08