如何在 c++ 中将字符转换为位数组

How to convert char to an array of bits in c++?

本文关键字:转换 数组 字符 c++      更新时间:2023-10-16

我需要将字符串的每个字符作为数组中的位序列获取,或者只是在循环中遍历它,无论哪种方式都有效。这是我以前在ASM中做的事情,不确定如何在c ++中做到这一点。

编辑:我正在尝试复制我用asm所做的工作,读取内存中的文件并一点一点地遍历它,操作每个位,做更多的密码并将其保存回来。

基本上是一个简单的加密。它不是家庭作业,也不是项目。

您可以使用位运算符遍历它:

unsigned char c = 'a'
for(int i = 0; i < 8; i++)
{
  std::cout << (c >> i) & 1 << std::endl;
}

这会将c向右移动i位置,并使用按位 AND 获取最低有效位的值。

标准库有一个类,std::bitset .这可能是你需要的。

您需要

使用位掩码和按位运算符&|>>和/或<<进行查找。 我猜你会想将它们存储在布尔类型的数组中,类似于bool bitArray[256];

当然,只使用 unsigned char 来存储一堆位是标准做法。

您可以循环字符并使用位掩码检查位

char c;
for (int i = 0; i < 8; ++i) {
    bool is_set = c & (1 << i);
    std::out << "Bit " << i << ": " << is_set << 'n';
}

或字符串

std::string s;
for (auto p = s.begin(); p != s.end(); ++p) {
    char c = *p;
    // loop over the bits
}