C# 访问字节的LSB并用值(1或0)替换它

C# 访问字节的LSB并用值(1或0)替换它,c#,C#,这是一个场景,我有一个正面和负面的数字列表。和另一个位列表(0和1)。我必须将这些位替换为第一个列表中每个数字的LSB(即:-个数字) for(int k=0;k

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

for(int k=0;k<8;k++)
{
i1=指数[k,0];
i2=指数[k,1];
字符串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]——它说它只可读。我做错了什么?我如何修改我的数字?

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

new_byte = (old_byte & ~1) | new_bit

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

new_byte = (old_byte & ~1) | new_bit

您可以使用位操作:

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

如果您使用的是有符号字节,只需将
byte
替换为
sbyte

,就可以使用位操作:

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

如果您使用的是有符号字节,只需将
byte
替换为
sbyte

究竟为什么要使用字符串进行数字运算???它应该是一个简单的按位操作。您实际上是想将表单作为字符串获取,还是想更改字节中的值?无法赋值,是的readonly@Jon双向飞碟我只想用我想要的比特值替换LSB。到底为什么要用字符串进行数字运算???它应该是一个简单的按位操作。您实际上是想将表单作为字符串获取,还是更改字节中的值?无法分配给,它是readonly@Jon双向飞碟我只想用我想要的比特值来替换LSB。我的正数和负数都是随机的array@Ehsan:C#中的字节是无符号的-没有负字节。@Jon Skeet ok。我告诉你这个场景,我有一个正面和负面的数字列表。和另一个位列表(0和1)。我必须将这些位替换为第一个列表中每个数字(即:-个数字)的LSB。我从一个array@Ehsan:C#中的字节是无符号的-没有负字节。@Jon Skeet ok。我告诉你这个场景,我有一个正面和负面的数字列表。和另一个位列表(0和1)。我必须将这些位替换为第一个列表中每个数字的LSB(即:-个数字)