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();
}
相关文章
|
7月前
|
SQL Java 数据库连接
对于mybatis if标签对 byte int 等非字符串和字符串判断的问题
对于mybatis if标签对 byte int 等非字符串和字符串判断的问题
|
12月前
|
Oracle 关系型数据库 数据处理
通过Oracle识别字符串中的中文or字母or数字来介绍全角半角转换函数(to_multi_byte/to_single_byte)在varchar/clob中的使用案例
在日常处理数据的过程中,大家肯定会遇到很多奇奇怪怪的字符,然后还要对这些字符处理,比如***你有个需求:识别字符串中的中文或是识别字母或是识别数字,甚至都识别出来然后剔除or保留某些字符汉字或数字***。 你去百度了一下相关问题,然后得到的结果大都是用正则 &#39;\4E00&#39; and &#39;\9FA5&#39;来识别中文范围用a-zA-z或0-9或[:digit:][:alpha:]来识别字母或数字。但是如果你的字符串中包含全角字符,那这样是识别不全的!!!那怎么做才能够正确的识别中文、字母、数字呢???那就要考虑先做全半
通过Oracle识别字符串中的中文or字母or数字来介绍全角半角转换函数(to_multi_byte/to_single_byte)在varchar/clob中的使用案例
|
Java BI
JAVA中将byte[]数组转成16进制字符串
方法一: /** * byte数组转化为16进制字符串 * @param bytes * @return */ public static String byteToHexString(byte[] bytes) { Str...
1502 0
|
BI
关于byte 进制 float String 编码 16进制字符串转16进制byte的问题
首先 只有String才与编码有关; byte与其他类型转换时,要注意大端点还是小端点, 编码: Ascii Unicode gbk utf-8等等  byte 占 8位 可由两个16进制数(0xff)组成,一个16进制占4位,也可由8位二进制数组成等等,与编码没关系,但可用2进制表示,也可由其他进制表示。 “0xff”这样的16进制字符串转换成16进制byte Stri
1258 0
|
C#
C# 读取 timestamp 时间戳 值为byte[] 类型时转换为时间戳字符串
C# 中如何读取出来的时间戳为 byte[] 类型的话,用以下方式转换成 16进制字符串 string tmpUfts = "0x"+ BitConverter.ToString(dataRow["MaxRowVersion"] as System.
1354 0
字符串string和内存流MemoryStream及比特数组byte[]互转
原文:字符串string和内存流MemoryStream及比特数组byte[]互转     字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str,内存流变量为ms,比特数组为bt 1.
764 0

热门文章

最新文章

相关产品

  • 云迁移中心