如何将32个十六进制数存储在16字节数组中?
这个问题的出现是因为用户想要将一个包含32个十六进制数字的字符串存储在一个长度为16字节的数组中。用户想要将字符串中的每个2个字符的块视为一个十六进制数,并将其转换为一个长度为原始字符串长度一半的字节数组。
为了解决这个问题,可以使用下面的扩展方法:
public static byte[] HexToByteArray(this string hex) { hex = hex.Replace(" ", "").Replace("-", ""); var numberChars = hex.Length; var bytes = new byte[numberChars / 2]; for (var i = 0; i < numberChars; i += 2) bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); return bytes; }
这个方法首先将字符串中的空格和连字符删除。然后,它计算字符串的字符数,并创建一个长度为字符数一半的字节数组。接下来,它使用一个循环将每个2个字符的块转换为一个字节,并将其存储在字节数组中。最后,它返回字节数组作为结果。
使用这个方法,用户可以将一个包含32个十六进制数字的字符串转换为一个长度为16字节的字节数组。这个方法将字符串中的每个2个字符的块视为一个十六进制数,并将其转换为一个字节。最终的字节数组的长度将是原始字符串长度的一半。