日期:2014-05-18  浏览次数:20825 次

位串的组合
我有字节数组
  byte[] d_Byte = new byte[2];
  d_Byte[0]= (byte)(11); // 0000 1011
  d_Byte[1]= (byte)(13); // 0000 1101;
我现在想把d_Byte[0]的8位与d_Byte[1]的高6位连在一起,组成一个位串,即 0000 1011 0000 11,计算这14个位串所表示的无符号整数是多少。 
请问各位大侠,有什么好的方法吗,我的想法很土,就是直接遍历这些位,把各个位表示的整数值相加,如果是1,则加上2的n次方,如果是0,则总和加上0。但是总感觉不太好。求好些的方法。


------解决方案--------------------
[code=C#]
byte[] d_Byte = new byte[2];
d_Byte[0] = (byte)(11); // 0000 1011
d_Byte[1] = (byte)(13); // 0000 1101;

int s = (int)d_Byte[0];
s = s << 6;
int k = d_Byte[1] >> 2;
s ^= k;
/code]
------解决方案--------------------
C# code

byte[] d_Byte = new byte[2];
d_Byte[0] = (byte)(11); // 0000 1011
d_Byte[1] = (byte)(13); // 0000 1101;

int s = (int)d_Byte[0];
s = s << 6;
int k = d_Byte[1] >> 2;
s ^= k;

------解决方案--------------------
C# code

            string byte1 = Convert.ToString(11, 2);
            string byte2 = Convert.ToString(13, 2);
            string b = byte1.PadLeft(8, '0') + byte2.PadLeft(8, '0').Substring(0, 6);
            int d = Convert.ToInt32(b, 2);

------解决方案--------------------
2L 正解