 <pre><code>unsigned long i = mybits.to_ulong(); unsigned char c = static_cast&lt;unsigned char&gt;( i ); // simplest -- no checks for 8 bit bitsets </code></pre> <p>Something along the lines of the above should work. Note that the bit field may contain a value that cannot be represented using a plain <code>char</code> (it is implementation defined whether it is signed or not) -- so you should always check before casting.</p> <pre><code>char c; if (i &lt;= CHAR_MAX) c = static_cast&lt;char&gt;( i ); </code></pre>