有时我会得到一个值“0001”,有时候会得到“10001000”。我尝试使用如下代码将其转换为字符数组:
var array = ConvertToBinary(0x128.toString(“X”).ToCharArray();
然后我就这样使用它:
x[6] = value[6];
我的问题发生在我得到“0001”时,因为索引不会达到6.所以我得到索引超出范围异常。这是我的ConverToBinary
函数:
private static string ConvertToBinary(string hexString)
{
return String.Join(String.Empty, hexString.Select(
c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0')
)
);
}
如果我将.PadLeft(4,'0')改为.PadLeft(8,'0')而我的值=“10001000”而不是8字节,我得到16个字节
答案 0 :(得分:1)
您的十六进制转换已关闭。它会分别考虑每个字符,为15
提供F
,为1515
提供FF
。
将十六进制字符串整体转换为:
private static string ConvertToBinary(string hexString)
{
return Convert.ToString(Convert.ToInt32(hexString, 16), 2).PadLeft(8, '0');
}