我有十六进制数据
Byte[] data = new Byte[2];
data[0]=FF;
data[1]=FF;
此数据的二进制表示为
1111 1111 1111 1111
这里我想找到仅从第0位到第11位的整数值。 (从左到右)但我不知道如何以最小的复杂性找到价值?请帮帮我。谢谢。
答案 0 :(得分:2)
如果只想要特定位,可以使用位掩码应用逻辑AND 在您的情况下,位掩码是0000 1111 1111 1111(位0到11并包括11)或0FFF。
你提到“从左到右”,所以也许你想要1111 1111 1111 0000(FFF0) - 第4位,包括15位。
答案 1 :(得分:1)
short value = 0xFFFF;
value = value & 0x0FFF;
此操作将四个高位变为0.您可以转换char val[1] = val[1] & 0x0F
答案 2 :(得分:0)
将字节数组转换为字符串:
StringBuilder sb = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
{
sb.AppendFormat("{0:x2}", b)
}
return sb.ToString();
然后,将字符串解析为int
int a = int.Parse("10026AB0", NumberStyles.AllowHexSpecifier);
答案 3 :(得分:0)
这是基本的东西......
你没有“十六进制”数据,但有2个字节大小的整数。
在伪代码中(我不会说流利的c#):
int value=data[1]<<8 | data[0];
int maskedvalue=value & 4095; // bits 0..11 inclusive set
现在,maskedvalue保持仅设置了低11位的值。