【问题标题】:How to convert char(or string, other type) -> bits?如何转换字符(或字符串,其他类型)-> 位?
【发布时间】:2021-06-14 02:39:19
【问题描述】:

在 C++ 中, 我不明白这种经历。我需要你的帮助。 在本主题中,回答说使用 to_string。 但他们说 'to_string' 正在将位集转换为字符串,而 cpp 引用也是如此。 所以,我想知道转换某些数据的方式(字符或字符串(也许是 ASCII,可以转换 unicode?)。 {表示语句可以分位,可以处理}

问题“如何将字符转换为位?” 然后回答说“在位集中使用 to_string” 我想得到我输入的每一点。 我可以切割和分析多种类型的位并处理它们吗?如果可以,该怎么做?

#include <iostream>
#include <bitset>
#include <string>

using namespace std;

int main() {
    char letter;
    cout << "letter: " << endl;
    cin >> letter;
    cout << bitset<8>(letter).to_string() << endl;
    bitset<8> letterbit(letter);
    int lettertest[8];
    for (int i = 0; i < 8; ++i) {
        lettertest[i] = letterbit.test(i);
    }
    cout << "letter bit: ";
    for (int i = 0; i < 8; ++i) {
        cout << lettertest[i];
    }
    cout << endl;
    int test = letterbit.test(0);

}

执行此代码时,我得到了我想要的结果。 但我不明白'to_string'。 重要的一点是使用“to_string” {to_string 是将位集转换为字符串(包括名称)的函数, 那么是否有函数将字符串转换为位集??? 实际上,在我的代码中,使用带有字母的函数 -> 将字符串转换为位集(在合适的情况下,这是我想要的结果)}

帮助我理解这个动作。

【问题讨论】:

  • 您可以尝试改写您的问题吗?我很难理解。

标签: c++


【解决方案1】:

问:什么是位集?

https://www.cplusplus.com/reference/bitset/bitset/

bitset 存储位(只有两个可能值的元素:0 或 1, 真假,...)。

该类模拟 bool 元素数组,但针对空间进行了优化 分配:通常,每个元素只占用一位(其中,在 大多数系统,比最小的元素类型少八倍: 字符)。

换句话说,“bitset”是一个二进制对象(如“int”、“char”、“double”等)。

问:什么是bitset.to_string()?

Bitsets 的特点是可以由 和 转换为整数值和二进制字符串(参见其 构造函数和成员 to_ulong 和 to_string)。他们也可以是 以二进制格式直接从流中插入和提取(参见 适用的运算符)。

换句话说,to_string() 允许您将二进制位集转换为文本。

问:如何转换转换字符(或字符串,其他类型)-> 位?

A:根据上述,只需使用 bitset.to_ulong()

这是一个例子:

https://en.cppreference.com/w/cpp/utility/bitset/to_string

代码:

#include <iostream>
#include <bitset>
int main()
{
    std::bitset<8> b(42);
    std::cout << b.to_string() << '\n'
              << b.to_string('*') << '\n'
              << b.to_string('O', 'X') << '\n';
}

输出:

00101010
**1*1*1*
OOXOXOXO

【讨论】:

  • 我想问问我的理解是否正确。 'b.to string' 将 42(初始化值)的位集更改为带有参数的 'String'?(不将二进制转换为字符串!?)和默认字符串(没有像 'O'、'X' 等参数。 ) 是 1, 0?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多