有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组在java中如何在2D图像中移动?

调用shift查找隐藏在图像数据中的图像,方法是保存位7,将位0-6向左移动一个位置,并将位0设置为先前保存的位7的值

这是什么意思

for (int row = 0; row < height; row++) {
            for (int col = 0; col < width; col++) {
                int pixel = image[row][col];
                pixel = (pixel & 0b01111111) << 1;
                image[row][col] = pixel;

这就是我到目前为止所拥有的,它会移位,但是我不确定如何将位0转换为之前保存的位7的值


共 (1) 个答案

  1. # 1 楼答案

    假设你有7位:1001110 首先你节省了7:1 然后将位0-6向左移位:0011100 将位0设置为保存的位7:0011101

    如果你比较输入和输出,你实际上是在把整组位移到左边(包括环绕)

    我不确定问题的具体细节,但请将您的位想象为像素。0表示没有像素,1表示有。通过移动位(图像的表示),也可以移动图像

    1001110//位数据 . ... // 假设这是你的形象 ... . // 移位图像

    示例代码:

    byte[] arr = {0,1,0,1,1,0,1};
    byte temp = arr[0];
    int i;
    for (i = 0; i < arr.length-1; i++) {
        arr[i] = arr[i+1];
    }
    arr[i] = temp;
    

    编辑:

    根据您的示例,如果要将第0位设置为之前的第8位,可以执行以下操作:

    int temp = (pixel&(1<<8))>>8;
    pixel = (pixel & 0b011111111) << 1;
    if (temp==1) pixel |= 0b000000001;