代码data.append(pixel[0] & 0b11)中&与0b11的作用解析
解析
pixel[0] & 0b11里的运算符与二进制数作用 1. 按位与运算符&的作用
这是二进制位层面的运算,规则很直接:两个数的对应二进制位都为1时,结果的该位是1,否则为0。举个实际例子,假设pixel[0]的值是十进制154,对应二进制是10011010,和0b11(二进制00000011)做按位与运算:
10011010 & 00000011 = 00000010
最终得到的结果是十进制2,也就是原数值的最后两位二进制值。
2. 0b11的作用
0b11是二进制表示的3,对应8位字节格式就是00000011。它在这里充当一个掩码:和任意字节值做按位与时,会把该字节的高6位全部清零,只保留最后2位的数值。
结合你的像素修改场景
你提到要修改像素的最后3个单元(大概率指RGB三个颜色通道,每个通道占1字节),这段代码提取的是通道值的最后2位。这种操作常见于图像隐写——把秘密数据藏在像素的最低位,因为这几位的变化极其细微,人眼几乎看不出图像差异;也可能用于对像素值做低位截断,只保留最不重要的部分来做简化处理。
内容的提问来源于stack exchange,提问作者wcksn
相关产品推荐
相关产品推荐

