gpt4 book ai didi

java - Java 编码图像解码输出中出现奇怪的 Ascii 字符

转载 作者:行者123 更新时间:2023-12-01 04:54:17 26 4
gpt4 key购买 nike

我正在编写一个图像加密程序,在其中对图像内的字符串进行编码。

我正在处理 .png 图像。

编码通过以下步骤执行:

  • 图像的像素使用 getRGB() 存储在二维数组中。
  • 字符串中的每个字符都会转换为二进制形式并存储在数组中。
  • 4byte像素的每个字节的LSB根据字符的二进制形式的每一位而改变。第一个字节的 LSB 在第 0 位,第二个字节的 LSB 在第 8 位,第三个字节在第 16 位,第四个字节在第 24 位。
  • 编码后,使用setRGB()方法将修改后的像素写入原始图像。

解码:

  • 使用 getRGB() 读取图像的像素;
  • 采用相反的编码方法来检索数据。
  • 每第 8 位之后,包含解码位的 int 就会转换为字符。然后用零初始化另一个字符。

                if((pixels[i][j] & change)==1)  
    {
    tempText|=1 ;
    }

    tempText<<=1;

其中变化为 1,256,65536,16777216,具体取决于迭代。其中第0、8、16、24位都是1。

代码编译良好。但解码后,我在输出中得到奇怪的 ascii 字符。我找不到这其中的原因。所以我在这里咨询专家。

最佳答案

(对于评论来说太长了)

你写道:

int 变化=0;

                            for(int k=0;k<4;k++)
{
if(k==0)
{
change=1;
}
else
if(k==1)
{
change=256;
}
else
if(k==2)
{
change=65536;
}
else
if(k==3)
{
change = 16777216;
}

里面有很多重复。通常,计算机非常擅长消除重复。

如果我没有被这句话弄错的话,这可以重写:

final int change = 1 << 8 * k;

关于java - Java 编码图像解码输出中出现奇怪的 Ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427196/

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