0

先生,我有一个问题。我找到了一个负数的二进制,它给了我 32 位。我修剪除了前 8 位之外的所有其他位。现在我改变它的 LSB。它给了我 125 作为答案。我必须将其嵌入灰度图像中。根据我的要求,我必须将这 125 添加到平均值中(四个相邻像素的总和)。当我将它添加到平均值时。我给我的答案超过 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);
4

1 回答 1

0

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

于 2012-12-12T11:12:24.970 回答