十六进制字符串到布尔[]C#
我有一个十六进制字符串十六进制字符串到布尔[]C#,c#,boolean,hex,C#,Boolean,Hex,我有一个十六进制字符串string hex=a5a6aaaaaaaaaaaaaaaaaaaaaaaaaa9552,我想将其转换为布尔数组 我已经找到了一个可以将其转换为字节数组的函数,但后来我发现我需要一个bool数组。我如何更改此功能/创建一个新功能来为我完成此工作 private byte[] ConvertHexStringToByteArray(string hexString) { if (hexString.Length % 2 != 0) { thr
string hex=a5a6aaaaaaaaaaaaaaaaaaaaaaaaaa9552
,我想将其转换为布尔数组
我已经找到了一个可以将其转换为字节数组的函数,但后来我发现我需要一个bool数组。我如何更改此功能/创建一个新功能来为我完成此工作
private byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}
byte[] data = new byte[hexString.Length / 2];
for (int index = 0; index < data.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);
data[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
return data;
}
在最简单的级别上,
BitArray
可以对现有代码执行所有需要的操作:
var bytes=convertHextStringToByteArray(“A5”);
变量位=新的位数组(字节);
for(int i=0;i
这可以完成工作,不需要任何重新工作,但它不是一个bool[]
;坦率地说,我建议不要使用bool[]
——这是一种非常低效的数据存储方式,但您也可以使用BitArray
来实现这一点,而不需要任何额外的工作:
var bytes=convertHextStringToByteArray(“A5”);
变量位=新的位数组(字节);
bool[]arr=新bool[bits.Length];
位。复制到(arr,0);
对于(int i=0;i
您也可以重新编写
ConvertHextStringToByteArray
以在内部进行位运算,但是。。。这可能不是一个好主意。您确定它是字节数组(字节=0-255)还是位数组(字节=0-1)??字节[]可以解释为“布尔数组”,因为您将每一位作为布尔值。。。然后你只需要一个函数来检查一个特定的位位置并返回一个布尔值。我不明白你的要求您将字符串拆分为两块,最后将得到这6个唯一值A5
,A6
,AA
,9A
,95
,52
-为什么A5
是真的?或52
?等等你的判断规则是什么?你希望bool[]
看起来像什么?您有输入/输出示例吗?请注意,bool[]
效率极低,可能有更好的选项,如BitArray
了解布尔值的编码方式,可以是每位或每字节,或者介于两者之间的任何内容。字符串的源应该能够告诉您。
bool = {true, false, true, false, false, true, false, true, false, false, false, false, false, false, false, false}