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

news2024/9/20 1:13:00

在这里插入图片描述

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扩展库,相信会为您的开发工作带来很大的便利。
最后,如果您觉得本文对您有所帮助,请不要吝啬您的点赞和评论,提供宝贵的反馈和建议,让更多的读者受益。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch 安装 X-pack

X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。 1.…

编程测试被候选人吐槽了?原因可能是这些

一位前Facebook Tech Lead曾经说过:面试就好像是在第一次约会的时候,就决定是不是要跟对方结婚。 这虽然是个无奈的笑话,但也真实地反映了技术面试中的一个难题:面试官需要在相当有限的时间里,准确地判断候选人的技术…

什么是自然语言处理的机器翻译?

机器翻译(Machine Translation,MT)是一种自然语言处理技术,旨在将一种语言的文本自动翻译成另一种语言。机器翻译是自然语言处理领域的重要应用之一,它可以帮助人们在跨语言交流、文档翻译和信息检索等方面更加便捷和高…

Maven聚合和继承,使用IDEA构建聚合与继承工程

文章目录 1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤3:pom.xml添加所要管理的项目步骤4:使用聚合统一管理项目 2 继承步骤1:创建一个空的Maven项目并将其打包方式设置为pom步骤2:在子项目中设置其父工程步骤3:优化子项目共有依赖导入问题步骤4:优化子…

企业数据治理内训的好处这么多,赶紧安排!

数据治理是确保数据的质量和完整性的一种方法,这对企业非常重要,因为它们需要准确的数据来做出正确的决策。 学习有效地管理和维护数据 通过内部培训,员工可以学习如何有效地管理和维护数据,从而提高数据质量和可靠性。 帮助企业…

SpringAop的实践应用

使用AOP来对前端传来的对象参数进行 BaseDto中属性的填充 这样就不用每次都去UserThreadLocal中拿了再又往BaseDto中放了 Aspect Component public class UserAspect {Pointcut("annotation(org.springframework.web.bind.annotation.RequestMapping) || annotation(o…

测试将被开发、运维替代?我后悔了!?

记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。 工作这么久了,也不再浮躁,静下心来回忆当初选择软件测试工作的历程,也是对自己职业生涯的一次回顾。 …

每日一题162——重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c &…

Conmi的正确答案——Cordova安装并编译Android应用

系统:debian 11 Cordova版本:11.1.0 Cordova的Android平台:10.1.2 当前安卓最新稳定API:33(Android版本列表) 1、安装npm(cordova是基于nodejs开发的) apt install npm -y2、使用n…

OpenCV中的图像处理3.10(八)直方图-寻找、绘制、分析(掩膜)与均衡化

目录 3.10 OpenCV中的直方图3.10.1 直方图--1:寻找、绘制、分析目标理论寻找直方图绘制直方图掩膜的应用其他资源 3.10.2 直方图--2:直方图均衡化目标理论OpenCV中的直方图均衡化CLAHE(对比度有限的自适应直方图均衡)其他资源 翻译…

【笔试强训选择题】Day16.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

Linux Qt6 安装教程及错误解决

在Linux环境,通常为Ubuntu,安装Qt开发环境,与Windows安装相比,还是稍显繁琐,需要多做几个步骤。 这里的Ubuntu版本采用的是ubuntu-22.04.2-desktop-amd64,所以,比旧版本会少很多坑,…

今天面了个字节跳动拿35K出来的测试,真是砂纸擦屁股,给我露了一手啊

今年的春招已经结束,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好,他山之石…

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…

MathType7公式编辑器新版详细介绍下载安装

由于CSDN这边不能发相关的教程等,若仅用于学习体验,请移步,有能力请支持正版。 wx供重浩:创享日记 对话框发送:mathtype 免费获取MathType-win-zh.exe安装包 它是一款用于数学公式编辑和排版的软件。MathType可以在Mi…

能源革命:可持续能源技术如何改变世界

随着全球气候变化日趋严重,能源转型成为解决气候问题和提高全球能源安全合理性的必要措施之一。可持续能源技术因其对环境的友好性和可再生性而成为了当前热点话题。你认为可持续能源技术真的能改变世界吗?一起来说说你的看法吧! 一、你在工…

实现能效升级 | 基于ACM32 MCU的冰箱压缩机变频方案

概述 冰箱制冷系统中最重要的部件是压缩机。它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为整个制冷循环提供源动力。这样就实现了压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循…

1016. 子串能表示从 1 到 N 数字的二进制串

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 。 子字符串 是字符串中连续的字符序列。 示例 1: 输入:s &qu…

【C++】new和delete

new是个运算符 使用: new 类型(初始值); malloc和new的区别: 1--new申请空间失败抛出异常,malloc返回空指针 ip(new(nothrow) Int(10))//不想它抛出异常 2--new调用构造函数 3--new可以重…

智慧闹钟

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 首先相对于传闹钟设置闹铃的方式,我想把这款创意闹钟设计成通过光照传感器来实现对闹钟的开启,更有效实现闹钟的自动化、智能化,不过为了防止误触带来闹钟的开启,需要对开启条件…