拆分200位十六进制位掩码

时间:2015-03-04 13:59:41

标签: c# hex bitmask

我有一个200位的位掩码存储为十六进制值。 为了应用&位运算符,我必须首先将十六进制转换为整数但200位对于uint64来说太大了所以我的问题是:如何在不丢失数据的情况下将我的位掩码拆分为4个不同的十六进制值?

这样我也可以分割我的200位数据,然后将每个数据块与相应的位掩码块进行比较,而不会改变结果。

2 个答案:

答案 0 :(得分:1)

您可以使用 System.Numerics 中的BigInteger(它是一个单独的程序集):

BigInteger bi = BigInteger.Parse("01ABC000000000000000000000000000000000", System.Globalization.NumberStyles.HexNumber);

非常重要:在十六进制数字之前添加“0”! (因为BigInteger.Parse("F", NumberStyles.HexNumber) == -1,而BigInteger.Parse("0F", NumberStyles.HexNumber) == 15

BigInteger实施“经典”逻辑运算符(&|^

需要.NET 4.0

答案 1 :(得分:0)

实现这一目标的最有效方法是编写一个可以在200位数据上存储和执行二进制操作,将字符串作为输入等的类。