这是一个场景,我有一个正面和负面的数字列表。另一个位列表(0' s和1' s)。我必须将这些位替换为第一个列表中每个数字的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] - 它说它只是可读的。我做错了什么,如何修改我的号码?
答案 0 :(得分:3)
您可以使用位操作:
byte b = -3;
byte b0 = (byte)(b & 254); // Make LSB 0
byte b1 = (byte)(b | 1); // Make LSB 1
如果您使用的是有符号字节,只需将byte
替换为sbyte
。
答案 1 :(得分:1)
如果这真的是一个字节,为什么你不做位算术,如下所示:
new_byte = (old_byte & ~1) | new_bit