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();
}
相关文章
|
23天前
|
JavaScript
js 解析 byte数组 成字符串
js 解析 byte数组 成字符串
|
8天前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
|
18天前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
50 0
|
3月前
|
SQL 开发框架 前端开发
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
|
4月前
|
C#
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
27 0
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
|
3月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
32 0
|
3月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
41 0
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
4月前
|
C#
C# 中的字符与字符串
C# 中的字符与字符串
|
5月前
|
C#
C#字符串
C#字符串
36 0