0

这是场景,我有一个正数和负数的数字列表。还有另一个位列表(0 和 1)。我必须将这些位替换为第一个列表中每个数字的 LSB(即:数字)。

for (int k = 0; k< 8; k++)
{
    i1 = index[k, 0];
    i2 = index[k, 1];
    string str1 = Convert.ToString(d[i1,i2], 2);
    str1 = str1.Substring(Math.Max(str1.Length - 8, 0)).PadLeft(8, '0');
    str1[0] = Tnbinary[k];
}

它不允许我修改 str[0] - 它说它只是可读的。我做错了什么,如何修改我的号码?

4

2 回答 2

3

您可以使用位操作:

byte b = -3;
byte b0 = (byte)(b & 254);   // Make LSB 0
byte b1 = (byte)(b | 1);     // Make LSB 1

如果您使用有符号字节,只需替换bytesbyte.

于 2012-12-11T10:51:55.943 回答
1

如果这真的是一个字节,为什么你不做位算术,像这样:

new_byte = (old_byte & ~1) | new_bit
于 2012-12-11T10:51:55.760 回答