尝试在C#中解码十六进制到二进制表示

时间:2014-03-12 19:18:08

标签: c# python redis bitarray

我正在从Python(使用bitarray lib)向Redis保存bitarray(40位)。 当我从Redis中检索此值时,我得到:\xe8\x00\x00\x00\x00

如何在C#中将此值转换为“01010101”?

谢谢!

编辑:

当我使用此表格时: http://easycalculation.com/hex-converter.php,返回的二进制值是我所期待的。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

// Chop up the string into individual hex values
string[] hexStrings = hexString.Split(new[] { "\\x" }, StringSplitOptions.RemoveEmptyEntries);

// Convert the individual hex strings into integers
int[] values = hexStrings.Select(s => Convert.ToInt32(s, 16)).ToArray();

// Convert the integers into 8-character binary strings
string[] binaryStrings = values.Select(v => Convert.ToString(v, 2).PadLeft(8, '0')).ToArray();

// Join the strings together
string binaryString = string.Join("", binaryStrings);

编辑 - 以下是您想要使用BitArray时可以执行的操作示例:

// Chop up the string into individual hex values
string[] hexStrings = hexString.Split(new[] { "\\x" }, StringSplitOptions.RemoveEmptyEntries);

// Convert the individual hex strings into bytes
byte[] bytes = hexStrings.Select(s => Convert.ToByte(s, 16)).ToArray();

BitArray bitArray = new BitArray(bytes);