【发布时间】:2009-03-26 08:21:45
【问题描述】:
我有一个需要转换为字节数组的十六进制字符串。最好的方式(即高效且代码最少)是:
string hexstr = "683A2134";
byte[] bytes = new byte[hexstr.Length/2];
for(int x = 0; x < bytes.Length; x++)
{
bytes[x] = Convert.ToByte(hexstr.Substring(x * 2, 2), 16);
}
如果我有 32 位值,我可以执行以下操作:
string hexstr = "683A2134";
byte[] bytes = BitConverter.GetBytes(Convert.ToInt32(hexstr, 16));
但是在一般情况下呢?有没有更好的内置功能,或者更清晰(不一定要更快,但仍然高效)的方式来做到这一点?
我更喜欢一个内置函数,因为除了这个特定的转换之外,似乎所有东西(很常见的东西)都有一个。
【问题讨论】:
-
请注意,如果传递一个奇数长度的字符串,您的解决方案和接受的解决方案将失败。例如,在“A”的情况下,返回的字节数组中将没有任何内容。
-
@Jim,我刚刚发布了一个解决该问题的答案,尽管修复其他解决方案也很容易。
-
我意识到这一点。我假设一个经过验证的字符串。