位串的组合

allen12345 2012-05-09 11:03:03
我有字节数组
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。但是总感觉不太好。求好些的方法。
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-05-09
  • 打赏
  • 举报
回复

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);
cnfixit 2012-05-09
  • 打赏
  • 举报
回复

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;


又或者

int s = d_Byte[0] * 64 + d_Byte[1] / 4;
cnfixit 2012-05-09
  • 打赏
  • 举报
回复
[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]
scjypzh 2012-05-09
  • 打赏
  • 举报
回复
2L 正解

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧