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