我需要帮助来理解下面的代码,我在一个教程解释关于隐写和LSB中找到。然而,我不明白为什么代码编写器使用模运算符(%
)。例如,要将新数据插入红色像素中,他使用了% 2
,对于绿色% 5
等等。代码片段如下:提取最低有效位 - 为什么%操作符是相关的?
for i, x in enumerate(data):
if counter < len(message_bit):
if i % 2 == 0:
r= int(str("{0:b}".format(x[0]))[:-1] + message_bit[counter], 2) # red
x = (r, x[1], x[2])
counter += 1
elif i % 5 == 0:
g = int(str("{0:b}".format(x[1]))[:-1] + message_bit[counter], 2) # green
x = (x[0], g, x[2])
counter += 1
elif i % 11 == 0:
pass
else:
b = int(str("{0:b}".format(x[2]))[:-1] + message_bit[counter], 2) #blue
x = (x[0], x[1], b)
counter += 1
new_data.append(x)
我看来像原来的代码是不是位线正好分裂。可能是意图,可能是一个错误。幸运的是,不需要回答他们如何选择常量来回答为什么使用相关操作符的问题。 –
[链接](http://tkmr.hatenablog.com/entry/2014/07/28/223854)到上下文的整个代码。 – Reti43