调用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的值。
假设您有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;