C#将字符串转字节数组
时间: 2023-07-06 19:40:02 浏览: 128
在C#中,将字符串转换成字节数组可以使用Encoding类中的GetBytes方法。GetBytes方法可以将字符串转换成指定编码格式的字节数组。
以下是示例代码:
```csharp
string str = "Hello World!";
byte[] byteArray = Encoding.UTF8.GetBytes(str);
```
上面的代码将字符串`"Hello World!"`转换成了UTF-8编码的字节数组。如果需要使用其他编码格式,可以将`Encoding.UTF8`替换成相应的编码格式,例如:
```csharp
byte[] byteArray = Encoding.ASCII.GetBytes(str); // ASCII编码
byte[] byteArray = Encoding.Unicode.GetBytes(str); // Unicode编码
byte[] byteArray = Encoding.BigEndianUnicode.GetBytes(str); // BigEndianUnicode编码
byte[] byteArray = Encoding.UTF32.GetBytes(str); // UTF-32编码
```
需要注意的是,不同的编码格式可能会导致字节数组的长度不同,因此在使用字节数组时需要注意编码格式的一致性。
相关问题
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);
```
C# 16进制字符串转字节数组
可以使用 `System.Linq` 命名空间下的 `Enumerable.Range` 方法和 `Convert.ToByte` 方法来实现:
```csharp
string hexString = "FFAABBCC";
byte[] bytes = Enumerable.Range(0, hexString.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hexString.Substring(x, 2), 16))
.ToArray();
```
上面的代码中,我们首先定义了一个 16 进制字符串 `hexString`,然后使用 `Enumerable.Range` 方法生成一个从 0 到字符串长度的数字序列,通过 `Where` 方法筛选出偶数位置的字符(因为每两个字符表示一个字节),再使用 `Select` 方法将每两个字符转换为一个字节,并使用 `ToArray` 方法转换为字节数组。
阅读全文