c# 把string数组转十六进制数的byte数组
时间: 2024-09-24 18:26:33 浏览: 56
C#string转byte(16进制)代码.txt
在C#中,将字符串数组转换为十六进制字节数组可以分为两步:首先,需要将每个字符串元素解析为十六进制数字,然后将它们合并成一个完整的字节数组。这里有一个简单的示例:
```csharp
using System;
using System.Text;
public static byte[] StringArrayToHexByteArray(string[] hexStrings)
{
if (hexStrings == null || hexStrings.Length == 0)
{
return new byte[0];
}
// 创建StringBuilder用于拼接十六进制字符串
StringBuilder hexBuilder = new StringBuilder();
foreach (string hexString in hexStrings)
{
// 检查字符串是否只包含有效的十六进制字符,并忽略非数字字符
string cleanedHex = RemoveNonHexCharacters(hexString);
hexBuilder.Append(cleanedHex);
}
// 将字符串转换为字节,每两个字符代表一个字节(因为16进制对应4位二进制)
int byteLength = hexBuilder.Length / 2;
char[] hexChars = hexBuilder.ToString().ToCharArray();
byte[] byteArray = new byte[byteLength];
for (int i = 0; i < byteLength; i++)
{
byteArray[i] = Convert.ToByte(hexChars[i * 2], 16); // 取前两个字符作为字节的低四位
if (i < byteLength - 1)
{
byteArray[i] |= Convert.ToByte(hexChars[i * 2 + 1], 16) << 4; // 取后两个字符作为字节的高四位
}
}
return byteArray;
}
// 辅助函数,去除字符串中的非十六进制字符
private static string RemoveNonHexCharacters(string input)
{
return new string(input.Where(c => Char.IsLetterOrDigit(c)).ToArray());
}
```
使用这个方法时,传入一个字符串数组`hexStrings`,它应该包含一系列的十六进制数字(例如:"FF", "AA", "1B")。返回的是一个对应的字节数组。
阅读全文