C#16进制字符串转字节数组
时间: 2024-11-15 15:27:39 浏览: 3
C# 16进制与字符串、字节数组之间的转换
在C#中,你可以使用`System.Text.Encoding`类的`GetBytes`方法将十六进制字符串转换成字节数组。下面是一个简单的示例:
```csharp
using System;
using System.Text;
public byte[] HexStringToByteArray(string hex)
{
// 确保输入是有效的16进制字符串
if (!hex.All(char.IsHexDigit))
throw new ArgumentException("Invalid hexadecimal string");
// 将字符串转换为字符数组,每个字符代表一个16位的二进制数
char[] hexChars = hex.ToCharArray();
// 创建一个新的byte数组,长度是字符数组的一半(因为每两个字符表示一个字节)
int byteLength = hexChars.Length / 2;
byte[] bytes = new byte[byteLength];
// 使用Encoding.UTF8.GetBytes方法从字符数组解码
for (int i = 0; i < byteLength; i++)
{
bytes[i] = Convert.ToByte(hexChars[i * 2], 16); // 第1个字符对应最低4位,第2个字符对应最高4位
if (i + 1 < byteLength) // 如果还有下一个字节
bytes[i] |= Convert.ToByte(hexChars[i * 2 + 1], 16) << 4; // 添加下一个字节的高位部分
}
return bytes;
}
// 示例用法
string hexString = "ABCD1234";
byte[] byteArray = HexStringToByteArray(hexString);
```
阅读全文