leonvdyk
leonvdyk

Reputation: 61

Write BitSet of 8 bits to file (C++)

I have a BitSet of 8 bits.

How would I convert those 8 bits to a byte then write to file?

I have looked everywhere and only find converting the other way.

Thanks alot!

Upvotes: 1

Views: 4412

Answers (3)

ok4
ok4

Reputation: 38

You could use 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();

Upvotes: 0

JLDiaz
JLDiaz

Reputation: 1453

Assuming that you are talking about C++ STL bitsets, the answer is to convert the bitset to int (ulong to be precise), and casting the result into a char.

Example:

#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;
}

Upvotes: 4

Brian Roach
Brian Roach

Reputation: 76908

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

They can also be directly inserted and extracted from streams in binary format.

You don't need to convert anything, you just write them to the output stream.

Aside from that, if you really wanted to extract them into something you're used to, to_ulong and to_string methods are provided.

If you have more bits in the set than an unsigned long can hold and don't want to write them out directly to the stream, then you're either going to have convert to a string and go that route, or access each bit using the [] operator and shift them into bytes that you're writing out.

Upvotes: 1

Related Questions