Записать BitSet из 8 бит в файл (C ++) - PullRequest
1 голос
/ 16 марта 2012

У меня есть набор битов из 8 битов.

Как бы я преобразовал эти 8 битов в байт, а затем записал в файл?

Я посмотрел везде и нашел преобразование только другим способом.

Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 16 марта 2012

Предполагая, что вы говорите о наборах битов C ++ STL, ответ заключается в преобразовании набора битов в int (точнее, в ulong) и преобразовании результата в символ.

Пример:

#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;
}
2 голосов
/ 16 марта 2012

http://www.cplusplus.com/reference/stl/bitset/

Их также можно напрямую вставлять и извлекать из потоков в двоичном формате.

Вам не нужно ничего преобразовывать, вы просто пишетеих в выходной поток.

Кроме того, если вы действительно хотите извлечь их из того, к чему вы привыкли, предусмотрены методы to_ulong и to_string.

Если у вас в бите больше битов, чем может хранить беззнаковый длинный, и вы не хотите записывать их прямо в поток, то вам нужно будет либо преобразовать в строку, и пойти по этому путиили получите доступ к каждому биту с помощью оператора [] и сдвиньте их в байты, которые вы записываете.

0 голосов
/ 20 марта 2019

Вы можете использовать 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();
...