gpt4 book ai didi

c# - 函数将十六进制字符串转换为 BitArray C#

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:32 25 4
gpt4 key购买 nike

我创建了以下将按要求执行的函数(将 HEX 字符串转换为 BitArray)。我不确定函数的效率,但我现在的主要问题是 Convert.ToInt64 函数是 endian 特定的。当这被移植到备用芯片组时,我们将得到不同的结果(或异常)。那么谁能想到一种替代方法来进行这种转换???

public BitArray convertHexToBitArray(string hexData)
{
string binary_values = "";
BitArray binary_array;

if (hexData.Length <= "FFFFFFFFFFFFFFFF".Length) // Max Int64
{
binary_values = Convert.ToString(Convert.ToInt64(hexData, 16), 2);
binary_array = new BitArray(binary_values.Length);

for (int i = 0; i < binary_array.Length; i++)
{
if (binary_values[i] == '0')
{
binary_array[i] = false;
}
else
{
binary_array[i] = true;
}
}
}
}

我删除了大部分错误/异常处理以保持大小,所以请原谅。

最佳答案

这是一个简单的答案,应该适用于任何长度的字符串:

public static BitArray ConvertHexToBitArray(string hexData)
{
if (hexData == null)
return null; // or do something else, throw, ...

BitArray ba = new BitArray(4 * hexData.Length);
for (int i = 0; i < hexData.Length; i++)
{
byte b = byte.Parse(hexData[i].ToString(), NumberStyles.HexNumber);
for (int j = 0; j < 4; j++)
{
ba.Set(i * 4 + j, (b & (1 << (3 - j))) != 0);
}
}
return ba;
}

关于c# - 函数将十六进制字符串转换为 BitArray C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com