Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
十六进制字符串到布尔[]C#_C#_Boolean_Hex - Fatal编程技术网

十六进制字符串到布尔[]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}