C# | [二进制字符串] 与 [字节数组] 互相转换,一行代码就搞定! - CodePlus系列

简介: 开发中有时需要将二进制数据转换为字符串或相反。虽然.NET提供了一些用于二进制数据操作的类库,但是它们的使用有时候会比较繁琐。STTech.CodePlus是一个.NET扩展库,它提供了很多实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。在本文中,我们将介绍如何使用STTech.CodePlus扩展库实现二进制字符串和字节数组的快速互相转换。

image.png

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

@[toc]

前言

开发中有时需要将二进制数据转换为字符串或相反。虽然.NET提供了一些用于二进制数据操作的类库,但是它们的使用有时候会比较繁琐。STTech.CodePlus是一个.NET扩展库,它提供了很多实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。
在本文中,我们将介绍如何使用STTech.CodePlus扩展库实现二进制字符串和字节数组的快速互相转换。

示例代码

// 用于测试的字节数组
byte[] bytes = new byte[] {
   
    0x01, 0x11, 0x21, 0xF2, 0xF3, 0xAA, 0xAB, 0xAC, 0xAD, };

// 将字节数组转换为二进制字符串
string binaryString = bytes.Select(b => Convert.ToString(b, 2).PadLeft(8,'0')).Join();

// 将二进制字符串还原为字节数组
byte[] bytes2 = binaryString.Slice(8).Select(arr=> Convert.ToByte(arr, 2)).ToArray();

// 输出转换结果
Console.WriteLine($"{binaryString}\r\n{bytes2.ToHexCodeString()}\r\n{bytes2.ToHexString()}");

执行结果如下图:

image.png

实现思路

我们首先定义了一个字节数组bytes,然后通过LINQ表达式将其转换为一个二进制字符串binaryString。这里我们使用了Select扩展方法和Convert.ToString方法将每个字节转换为8位的二进制字符串,并使用PadLeft方法在左侧填充0,使得每个二进制字符串的长度都是8位。接着,我们使用Join扩展方法将所有二进制字符串连接成一个字符串。这里我们没有指定分隔符,因此默认使用空字符串。

接下来,我们使用Slice扩展方法将二进制字符串按照等尺寸(这里是8位)进行分片,然后使用Select和Convert.ToByte方法将每个二进制字符串转换为一个字节,最后使用ToArray方法将所有字节组成一个新的字节数组 bytes2。最后,我们使用ToHexCodeString和ToHexString扩展方法将字节数组 bytes2 转换为16进制代码格式的字符串和16进制格式的字符串,并输出转换结果。

扩展方法说明

在上述示例代码中,我们使用了STTech.CodePlus扩展库中的四个扩展方法:

  • Slice方法用于将字符串等分为指定大小的子串,并返回一个字符串列表;
  • Join方法用于将字符串列表中的所有字符串连接成一个新的字符串,可以指定分隔符;
  • ToHexCodeString方法用于将字节数组转换为16进制代码格式的字符串;
  • ToHexString方法用于将字节数组转换为16进制格式的字符串。

引用CodePlus库

想要使用STTech.CodePlus扩展库,可以通过Nuget搜索STTech.CodePlus并安装。

结束语

STTech.CodePlus扩展库提供了一些实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。如果在开发中需要进行二进制数据的转换操作,不妨尝试使用STTech.CodePlus扩展库,相信会为您的开发工作带来很大的便利。
最后,如果您觉得本文对您有所帮助,请不要吝啬您的点赞和评论,提供宝贵的反馈和建议,让更多的读者受益。

相关文章
|
2月前
|
C#
C#的小例子和字符串(一)
C#的小例子和字符串(一)
128 0
|
2月前
|
C# Windows
C#通过代码实现快捷键编辑
C#通过代码实现快捷键编辑
|
2月前
|
C#
C#有关字符串的分割,替换,截取
C#有关字符串的分割,替换,截取
|
19天前
|
C#
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
|
13天前
|
开发框架 数据可视化 C#
|
13天前
|
设计模式 存储 C#
|
13天前
|
设计模式 算法 C#
23种设计模式【C#代码举例】(上)
23种设计模式【C#代码举例】(上)
|
1月前
|
XML 开发框架 .NET
【.NET Core】常见C#代码约定
【.NET Core】常见C#代码约定
22 5
|
17天前
|
C#
C# 中的字符与字符串
C# 中的字符与字符串
8 0