从HEX数据中获取整数值

时间:2012-09-11 11:18:37

标签: c# binary hex data-conversion

我有十六进制数据

Byte[] data = new Byte[2];
data[0]=FF;
data[1]=FF;

此数据的二进制表示为

1111 1111 1111 1111

这里我想找到仅从第0位到第11位的整数值。 (从左到右)但我不知道如何以最小的复杂性找到价值?请帮帮我。谢谢。

4 个答案:

答案 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位的值。