2012-12-11 49 views
0

这里是场景,我有一个数字列表,包括正数和负数。还有另一个位列表(0和1)。我必须将这些位替换为第一个列表中每个数字的LSB(即: - 数字)。访问一个字节的LSB并将其替换为一个值(1或0)

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] - 它说它只是可读的。我做错了什么,如何修改我的号码?

+1

为什么地球上正在使用字符串进行数字操作?它应该是一个简单的按位操作。 – leppie

+0

你实际上是试图以字符串形式获取表单,还是改变字节中的值? –

+0

不能被分配,它只读 – codingbiz

回答

1

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

new_byte = (old_byte & ~1) | new_bit 
3

你可以使用位操作:

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

如果你使用签署字节,只需将byte替换为sbyte即可。

+0

我有一个从数组中随机出现的正负号 – Ehsan

+2

@Ehsan:C#中的字节是无符号的 - 没有负字节这样的事情。 –

+0

@Jon Skeet ok。我告诉你这个情景,我有一个数字列表,包括正面和负面。还有另一个比特列表(0和1)。我必须将这些比特替换为第一列表中每个数字的LSB(即: - 数字) – Ehsan

相关问题