是否可以在c ++中将bitset <8>转换为char?

Van*_*Van 9 c++ char bitset

我有bitset <8> v8,它的值类似于"11001101",如何将其转换为char?我需要一封信.像字母"f"= 01100110.

PS感谢您的帮助.我需要这个来说明位中的随机错误.例如,没有错误f,并且错误类似于♥,依此类推文件中的所有文本.在文本中,您可以清楚地看到此类错误.

dir*_*tly 12

unsigned long i = mybits.to_ulong(); 
unsigned char c = static_cast<unsigned char>( i ); // simplest -- no checks for 8 bit bitsets
Run Code Online (Sandbox Code Playgroud)

上述内容应该有效.请注意,位字段可能包含一个无法使用plain表示的值char(它是实现定义的是否已签名) - 因此您应该始终在转换之前进行检查.

char c;
if (i <= CHAR_MAX) 
c = static_cast<char>( i );
Run Code Online (Sandbox Code Playgroud)

  • 确切地说,这就是为什么我说“unsigned char”可能是一个更好的选择,尽管只是“可能”,因为如果提问者确实需要一个“char”,那么你首先说的是正确的,他们应该检查该值。为什么假设“8”作为一个例子,它不仅在问题中陈述了两次,它是想要转换为“char”的位集的自然大小。“如何将 `bitset&lt;127&gt;` 转换为 char”将是一个更愚蠢的问题...... (2认同)