我需要幫助來理解下面的代碼,我在一個教程解釋關於隱寫和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