C#二进制字符串与字节数组互相转换
文章目录
- C#二进制字符串与字节数组互相转换
- 前言
- 示例代码
- 实现思路
- 扩展方法说明
- 引用CodePlus库
- 结束语
前言
开发中有时需要将二进制数据转换为字符串或相反。虽然.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()}");
执行结果如下图:
实现思路
我们首先定义了一个字节数组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并安装。
也可参考此文章,末尾处有图文说明:
C# 字符串转Base64(图片、音频等各种文件,万物皆可转Base64) - CodePlus系列
结束语
STTech.CodePlus扩展库提供了一些实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。如果在开发中需要进行二进制数据的转换操作,不妨尝试使用STTech.CodePlus扩展库,相信会为您的开发工作带来很大的便利。
最后,如果您觉得本文对您有所帮助,请不要吝啬您的点赞和评论,提供宝贵的反馈和建议,让更多的读者受益。