C# | 二进制字符串与字节数组互相转换
@[toc]
前言
当我们在计算机中处理数据时,经常需要将数据从一种格式转换为另一种格式。而本文的将二进制字符串转换为字节数组听起来很稀松平常但实际又不是那么常见的特殊的转换方式。
二进制字符串是由 0 和 1 组成的字符串,比如:“0111010010101000”。
字节数组常用于读取和写入二进制文件、网络通信等。
二进制字符串转字节数组
实现思路如下:
- 计算字节数组的长度,每8个二进制位对应一个字节。
- 创建了一个指定长度的字节数组。
- 遍历了二进制字符串的每8个字符,将其转换为一个字节并存储在字节数组中。
- 返回字节数组。
// 将二进制字符串转换为字节数组
public static byte[] BinaryStringToByteArray(string binaryString)
{
// 计算字节数组的长度(每8个二进制位对应一个字节)
int numOfBytes = binaryString.Length / 8;
// 创建字节数组
byte[] byteArray = new byte[numOfBytes];
// 遍历二进制字符串的每8个字符,将其转换为一个字节并存储在字节数组中
for (int i = 0; i < numOfBytes; i++)
{
// 从二进制字符串中提取8个字符作为一个字节的二进制表示
string byteString = binaryString.Substring(i * 8, 8);
// 将字节的二进制表示转换为一个字节,并存储在字节数组中
byteArray[i] = Convert.ToByte(byteString, 2);
}
// 返回字节数组
return byteArray;
}
在遍历二进制字符串时,该方法使用了 Substring 方法从字符串中提取8个字符。它还使用了 Convert.ToByte 方法将字节的二进制表示转换为一个字节。这个方法的返回值是一个字节数组,其中每个元素都是一个字节,代表了原始二进制字符串中的一组八个二进制位。
字节数组转二进制字符串
实现思路如下:
- 创建一个 StringBuilder 对象来存储二进制字符串。
- 遍历字节数组中的每个字节。
- 将每个字节转换为二进制字符串,并将其添加到 StringBuilder 对象中。在转换时,使用 Convert.ToString(b, 2) 方法将字节转换为二进制字符串,使用 PadLeft 方法将字符串长度补足8位,不足的位数用0填充。
- 返回生成的二进制字符串。
// 将字节数组转换为二进制字符串
public static string ByteArrayToBinaryString(byte[] byteArray)
{
// 创建一个 StringBuilder 对象来存储二进制字符串
StringBuilder binaryStringBuilder = new StringBuilder();
// 遍历字节数组中的每个字节
foreach (byte b in byteArray)
{
// 将字节转换为二进制字符串,并将结果添加到 StringBuilder 中
// 使用PadLeft方法将字符串长度补足8位,不足的位数用0填充
binaryStringBuilder.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
// 返回生成的二进制字符串
return binaryStringBuilder.ToString();
}