我有一个200位的位掩码存储为十六进制值。 为了应用&位运算符,我必须首先将十六进制转换为整数但200位对于uint64来说太大了所以我的问题是:如何在不丢失数据的情况下将我的位掩码拆分为4个不同的十六进制值?
这样我也可以分割我的200位数据,然后将每个数据块与相应的位掩码块进行比较,而不会改变结果。
答案 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位数据上存储和执行二进制操作,将字符串作为输入等的类。