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

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扩展库,相信会为您的开发工作带来很大的便利。
最后,如果您觉得本文对您有所帮助,请不要吝啬您的点赞和评论,提供宝贵的反馈和建议,让更多的读者受益。
相关文章:
C# | [二进制字符串] 与 [字节数组] 互相转换,一行代码就搞定! - CodePlus系列
C#二进制字符串与字节数组互相转换 文章目录 C#二进制字符串与字节数组互相转换前言示例代码实现思路扩展方法说明引用CodePlus库结束语 前言 开发中有时需要将二进制数据转换为字符串或相反。虽然.NET提供了一些用于二进制数据操作的类库,但是它们的使用有时候会比…...
Java 细节汇总(5)-Comparator#compare() 升降序确定
文章目录 1. Comparator#compare() 升降序确定升序分析 1. Comparator#compare() 升降序确定 Java 语言中 Comparator#compare(T o1, T o2) 方法的实现可以决定排序元素的升序降序,但是许多人对升降序如何确定完全没有概念。要理解升降序是如何确定的,首…...
湖北棒球发展报告·棒球5号位
湖北棒球的发展报告与办法应该考虑以下几个因素: 1. 借助政策支持。湖北棒球要想发展,政策支持是必不可少的。政府需要提供足够的资金和政策支持,以帮助俱乐部提高运营能力和加强比赛的组织。获得政府的政策支持,可以促进湖北棒球…...
使用Eclipse 进行远程 Debug 调试
Eclipse远程调试 Java自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。 由于部署环境的差异性&am…...
记第一次出差得出的经验
文章目录 1:背景2:过程3:心得 1:背景 由于上家公司的某种原因,离职来到了新公司,内中原因不足道也。新公司业务方向暂且不说,入职后,个人看着以前的产品视频学习了不到两周…...
第12章:视图
一、视图 1.常见的数据库对象 ①表table:表是存储数据的逻辑单元,行和列形式存在。列是字段,行是记录。 ②数据字典:系统表,存放数据库相关信息的表。系统表的数据通常是数据库系统维护。 ③约束constraint&#x…...
Word控件Aspose.Words教程:操作 XPS 和 EPS 文档
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API 支持流行文件格式处理,…...
java并发-Exchanger
## 简介 Exchanger是Java并发包中提供的一个用于线程间数据交换的工具类。它允许在两个并发任务之间进行交换对象,当第一个任务调用exchange()方法时,它会阻塞等待另一个任务也调用这个方法,然后双方交换对象,并返回结果…...
毫米波雷达系列 | 传统CFAR检测(自适应类)
毫米波雷达系列 | 传统CFAR检测(自适应类) VI-CFAR [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dV34CKJt-1684215839850)(毫米波雷达系列 传统CFAR检测(自适应类).assets/image-20230516131206695…...
【2023/05/19】NFA
Hello!大家好,我是霜淮子,2023倒计时第14天。 非确定有限状态自动机(NFA)是一种模拟复杂系统行为的数学模型 目录 一、基本概念和理论 二、优点和缺点 三、应用场景 四、问题和挑战 五、重要性、作用和使用价值 …...
汽车功能安全
前言 近些年来,功能安全在汽车传统底盘域和动力域的应用已较为成熟,各大汽车企业功能安全意识也逐渐增强。在辅助驾驶和自动驾驶爆发式增长的大趋势下,现代汽车的功能安全在目前尤为复杂的电子电气系统中就显得更为重要,功能安全…...
【Python】数据分析与可视化实践:收支日统计数据可视化的实现
Python数据分析与可视化实践:收支日统计数据可视化的实现 Author:萌狼蓝天 Date:2023-5-7 数据读入与基本处理 上图是原始数据的一部分,存放于excel中,首先使用pd读入数据。读入数据后,删除不是收入&#x…...
Halcon 中_xld算子的概念与应用? select_shape_std 和 select_shape_xld区别?
文章目录 1 halcon中XLD的概念与应用1.1 halcon中什么是XLD?1. 2 XLD相关算子1.2 XLD的应用1.2.1 生成XLD的操作1.2.2 选取特定xld1.2.3 3.3 XLD的合并操作2 select_shape_std 和 select_shape_xld区别2.1 select_shape_std 算子介绍2.2 select_shape_xld算子介绍2.3 select_s…...
[pgrx开发postgresql数据库扩展]7.返回序列的函数编写(3)多行表序列
前文再续,书接上一回。 上一回我们解析了如何通过pgrx编写srf,返回一个TableIterator,但是在具体应用的时候,我们还是针对一条记录返回了一行数据(多个字段的一行,也还是一行),并没…...
刚入职,就想跑路了...
刚入职一家公司,想离职又怕找不到新工作。 说实话,这个问题还是蛮常见的,很多时候,入职的公司并不是自己最满意的,即使是最满意的,入职后总会遇到各种各样的不顺心,公司制度不规范啊࿰…...
如何让技术架构师具有预知未来业务发展的能力
大家好,今天我们来分享业务架构,但是我们并不是以产品经理角度讲述一个业务架构是什么以及如何做?而是以一个技术架构师的角度,讲述如何承接业务架构或在没有业务架构的时候,如何判断业务变化趋势而对系统架构提前做出…...
卷麻了,新来的00后实在是太卷了...
在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…...
单片机--实战练习
目录 【1】GPIO 1.定义 2.应用 I - Input - 输入采集 O - Output - 输出控制 编辑编辑 3.GPIO结构框图 4.功能描述 输入功能 输出功能 5.相关寄存器 【2】点亮一盏LED灯 1.实验步骤 2.编程实现 3.编译下载 4.复位上电 练习:实现LED灯闪烁…...
Go Etcd 分布式锁实战
1 分布式锁概述 谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Lock、synchronized,golang的Mutex等 对…...
Windows环境下pcl点云库 安装配置教程
本文为Windows配置点云库pcl步骤,具体win10、visual studio 2019、pcl1.11.1。 【1】下载安装包 Releases PointCloudLibrary/pcl GitHub 其中,AllInOne是一个包含了PCL库所有模块的单独下载包,方便快速获取整个PCL库,而pdb则…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
RLHF vs RLVR:对齐学习中的两种强化方式详解
在语言模型对齐(alignment)中,强化学习(RL)是一种重要的策略。而其中两种典型形式——RLHF(Reinforcement Learning with Human Feedback) 与 RLVR(Reinforcement Learning with Ver…...
