迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

在 C++ 中将字符串转换为二进制序列

作者:迹忆客 最近更新:2023/04/08 浏览次数:

本文将演示如何在 C++ 中将字符串转换为二进制序列的多种方法。


使用 bitset<N> 类将字符串转换为 C++ 中的二进制序列

给定任意字符串序列,我们会将其中的每个字符转换为相应的二进制表示形式。由于 ASCII 字符与整数相关联,并且 char 值可以视为 int,因此我们将利用 bitset<N> 类来初始化每个字符的固定二进制序列。

请注意,bitset<N> 的构造函数之一提供了一种从字符值构造二进制序列的方法,但是不管 char 是否已被强制转换为整数值,即使期望使用 int 也不例外。上述解决方案需要遍历整个字符串。另外,请注意,if 语句仅放置在循环内部以控制打印输出的格式。

#include <iostream>
#include <vector>
#include <bitset>

using std::cout;
using std::endl;
using std::string;
using std::bitset;

int main() {
    string str = "Arbitrary string to be converted to binary sequence.";

    for (int i = 0; i < str.length(); ++i) {
        bitset<8> bs4(str[i]);
        cout << bs4 << " ";

        if (i % 6 == 0 && i != 0)
            cout << endl;
    }
    cout << endl;

    return EXIT_SUCCESS;
}

输出:

01000001 01110010 01100010 01101001 01110100 01110010 01100001
01110010 01111001 00100000 01110011 01110100 01110010
01101001 01101110 01100111 00100000 01110100 01101111
00100000 01100010 01100101 00100000 01100011 01101111
01101110 01110110 01100101 01110010 01110100 01100101
01100100 00100000 01110100 01101111 00100000 01100010
01101001 01101110 01100001 01110010 01111001 00100000
01110011 01100101 01110001 01110101 01100101 01101110
01100011 01100101 00101110

在 C++ 中使用自定义函数将字符串转换为二进制序列

另外,我们可以定义一个函数,该函数将接受一个 int 值,并将二进制表示形式返回为 std::string 对象。此版本还需要迭代,直到将给定字符值除以 2 为止将其减小为 0。请注意,以前的解决方案输出的是我们通常以书面形式使用的 big-endian 表示形式,下面的示例在底层机器存储它们时输出 little-endian 表示形式。

#include <iostream>
#include <vector>
#include <bitset>

using std::cout;
using std::endl;
using std::string;
using std::bitset;

string toBinary(int n)
{
    string r;
    while ( n!=0 ){
        r += ( n % 2 == 0 ? "0" : "1" );
        n /= 2;
    }
    return r;
}

int main() {
    string str = "Arbitrary string to be converted to binary sequence.";

    for (int i = 0; i < str.length(); ++i) {
        cout << toBinary(str[i]) << " ";

        if (i % 6 == 0 && i != 0)
            cout << endl;
    }

    return EXIT_SUCCESS;
}

输出:

1000001 0100111 0100011 1001011 0010111 0100111 1000011
0100111 1001111 000001 1100111 0010111 0100111
1001011 0111011 1110011 000001 0010111 1111011
000001 0100011 1010011 000001 1100011 1111011
0111011 0110111 1010011 0100111 0010111 1010011
0010011 000001 0010111 1111011 000001 0100011
1001011 0111011 1000011 0100111 1001111 000001
1100111 1010011 1000111 1010111 1010011 0111011
1100011 1010011 011101

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C++ 中通过掷骰子生成随机值

发布时间:2023/04/09 浏览次数:169 分类:C++

本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。

在 C++ 中使用模板的链表

发布时间:2023/04/09 浏览次数:158 分类:C++

本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。

在 C++ 中添加定时延迟

发布时间:2023/04/09 浏览次数:142 分类:C++

本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。

在 C++ 中创建查找表

发布时间:2023/04/09 浏览次数:155 分类:C++

本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。

如何在 C++ 中把字符串转换为小写

发布时间:2023/04/09 浏览次数:63 分类:C++

介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码

如何在 C++ 中确定一个字符串是否是数字

发布时间:2023/04/09 浏览次数:163 分类:C++

本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便