我有一个8位的BitSet。
如何将这8位转换为一个字节然后写入文件?
我到处寻找,只发现转换方式。
非常感谢!
答案 0 :(得分:3)
假设您正在讨论C ++ STL位集,答案是将bitset转换为int(确切地说是ulong),并将结果转换为char。
示例:
#include <bitset>
#include <iostream>
using namespace std;
main()
{
bitset<8> x;
char byte;
cout << "Enter a 8-bit bitset in binary: " << flush;
cin >> x;
cout << "x = " << x << endl;
byte = (char) x.to_ulong();
cout << "As byte: " << (int) byte << endl;
}
答案 1 :(得分:2)
http://www.cplusplus.com/reference/stl/bitset/
它们也可以直接插入并以二进制格式从流中提取。
您不需要转换任何内容,只需将它们写入输出流即可。
除此之外,如果您真的想要将它们提取到您习惯使用的内容中,则会提供to_ulong
和to_string
方法。
如果集合中的位数多于无符号长整数可以容纳并且不想将它们直接写入流,那么您要么转换为字符串并转到该路由,要么访问每个位使用[]
运算符并将它们转换为您要写出的字节。
答案 2 :(得分:0)
您可以使用fstream std::ofstream
:
#include <fstream>
std::ofstream os("myfile.txt", std::ofstream::binary);
os << static_cast<uint_fast8_t>(bitset<8>("01101001").to_ulong());
os.close();