从获取的字符串,按位转字节

把获取的01字符串,按照每8位,转换一个char类型。怎么搞😐

先把每8位由二进制转化为十进制,接着用(char)将十进强制转化为char

你这每8位是低位在前还是高位在前呢?
8位二进制最高也是255,不会超过char类型容量,因此int可以直接转。其实在实际写的时候,转换的时候直接给char赋值就可以,不需要int转char。

#include <iostream>
#include <bitset>

int main()
{
    std::string str = "hello, world";

    std::string bits_str;
    for (auto c : str)
        bits_str += std::bitset<8>(c).to_string();
    std::cout << "bits: " << bits_str << '\n';

    std::string res;
    for (std::size_t i = 0; i < bits_str.size(); i += 8)
        res += static_cast<char>(std::bitset<8>(bits_str.substr(i, 8)).to_ulong());
    std::cout << "res: " << res << '\n';

    return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
bits: 011010000110010101101100011011000110111100101100001000000111011101101111011100100110110001100100
res: hello, world