负数二进制并改变它的LSB

时间:2012-12-12 10:20:07

标签: c# image-processing watermark

先生,我有一个问题。我找到一个负数的二进制数,它给我32位。我修剪除了前8位以外的所有其他位。现在我改变它的LSB。它给我125作为答案。我必须将其嵌入灰度图像中。根据我的要求,我必须在平均值(四个相邻像素的总和)中添加这125个。当我将其添加到mean时。我给出了超过255的答案。因此在修改lsb之后是可行的。我的位置仍然是负面的。

这是我的代码

string str1 = Convert.ToString(d[1, 1], 2);
str1 = str1.Substring(Math.Max(str1.Length - 8, 0)).PadLeft(8, '0');
char[] data = new char[str1.Length]; 

for (int m = 0; m < str1.Length; m++)
{
    data[m] = str1[m];
}

//data[0] = '0';
string s="";
data[0] = '0';

for (int m = 0; m < str1.Length; m++)
{
    s += data[m];
}

byte output = Convert.ToByte(s, 2);

1 个答案:

答案 0 :(得分:0)

您的代码正在修剪除 last 8位之外的所有代码。如果你想修剪 first 8位以外的所有内容,你应该使用str1.Substring(0,8)。而你正在改变最后8位的MSB。如果要更改LSB,则应使用数据[7]而不是数据[0]。