Как уже говорили другие, to_ulong
будет работать. У меня было некоторое сомнение, гарантирован ли порядок битов, пока я не посмотрел на Стандарт, C ++ 03 §23.3.5 / 3,
При преобразовании между объектом класса bitset и значением некоторого интегрального типа позиция бита pos
соответствует значению бита 1 << pos
. Интегральное значение, соответствующее двум или более битам, является суммой их битовых значений.
Итак, вы можете привести to_ulong
к unsigned short
(или, что еще лучше, uint16_t
), не беспокоясь о переполнении или порядке байтов.