C# | 二进制字符串(“101010101”)、字节数组(byte[])互相转换

简介: 当我们在计算机中处理数据时,经常需要将数据从一种格式转换为另一种格式。而本文的将二进制字符串转换为字节数组听起来很稀松平常但实际又不是那么常见的特殊的转换方式。二进制字符串是由 0 和 1 组成的字符串,比如:“0111010010101000”。字节数组常用于读取和写入二进制文件、网络通信等。

image.png

C# | 二进制字符串与字节数组互相转换

@[toc]

前言

当我们在计算机中处理数据时,经常需要将数据从一种格式转换为另一种格式。而本文的将二进制字符串转换为字节数组听起来很稀松平常但实际又不是那么常见的特殊的转换方式。

二进制字符串是由 0 和 1 组成的字符串,比如:“0111010010101000”。
字节数组常用于读取和写入二进制文件、网络通信等。

二进制字符串转字节数组

实现思路如下:

  1. 计算字节数组的长度,每8个二进制位对应一个字节。
  2. 创建了一个指定长度的字节数组。
  3. 遍历了二进制字符串的每8个字符,将其转换为一个字节并存储在字节数组中。
  4. 返回字节数组。
// 将二进制字符串转换为字节数组
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 方法将字节的二进制表示转换为一个字节。这个方法的返回值是一个字节数组,其中每个元素都是一个字节,代表了原始二进制字符串中的一组八个二进制位。

字节数组转二进制字符串

实现思路如下:

  1. 创建一个 StringBuilder 对象来存储二进制字符串。
  2. 遍历字节数组中的每个字节。
  3. 将每个字节转换为二进制字符串,并将其添加到 StringBuilder 对象中。在转换时,使用 Convert.ToString(b, 2) 方法将字节转换为二进制字符串,使用 PadLeft 方法将字符串长度补足8位,不足的位数用0填充。
  4. 返回生成的二进制字符串。
// 将字节数组转换为二进制字符串
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();
}
相关文章
|
8天前
|
C#
C#的小例子和字符串(一)
C#的小例子和字符串(一)
26 0
|
22天前
|
C#
C#有关字符串的分割,替换,截取
C#有关字符串的分割,替换,截取
|
4月前
|
C# 开发者
C# 10.0引入常量插值字符串:编译时确定性的新篇章
【1月更文挑战第22天】在C# 10.0中,微软为开发者带来了一项引人注目的新特性——常量插值字符串。这一功能允许在编译时处理和计算字符串插值表达式,从而得到可以在编译时确定的常量字符串。本文将深入探讨C# 10.0中常量插值字符串的概念、工作原理、使用场景及其对现有字符串处理方式的改进,旨在帮助读者更好地理解和应用这一强大的新特性。
|
4月前
|
编译器 C# 开发者
C# 10.0中插值字符串的改进:灵活性与性能的双重提升
【1月更文挑战第19天】C# 10.0带来了对插值字符串的显著改进,进一步增强了这一功能的灵活性和性能。插值字符串是C#中处理字符串格式化的一种强大方式,它允许开发者直接在字符串中嵌入变量和表达式。在C# 10.0中,插值字符串不仅获得了语法上的简化,还通过新的编译时优化提高了运行时性能。本文将详细探讨C# 10.0中插值字符串的改进内容,以及这些改进如何为开发者带来更加高效和便捷的编程体验。
|
8天前
|
C#
C#字符串
C#字符串
15 0
|
2月前
|
C#
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
37 1
|
4月前
|
JSON C# 开发者
C# 11.0引入自然字符串字面量:简化字符串处理的新时代
【1月更文挑战第26天】C# 11.0带来了一个令人兴奋的新特性:自然字符串字面量。这一特性旨在简化字符串的创建和处理,使开发者能够更直观地编写涉及多行字符串、转义字符和插值表达式的代码。自然字符串字面量不仅提高了代码的可读性,还减少了因转义字符引起的错误。本文将深入探讨C# 11.0中自然字符串字面量的概念、使用方法和其对现有字符串处理方式的改进。
|
4月前
|
存储 C# 索引
C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法
字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合
66 2
|
5月前
|
C# 图形学
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
79 0
|
5月前
|
C#
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。 我们在做开发的过程中,经常需要将收发数据打印出来检查。如何简单高效的一行代码转换字节数组到字符串呢?我们来一起看看吧!
57 0
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列