把获取的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