是否可以转换bitset< 8>。用c ++中的char?

时间:2012-06-17 01:10:57

标签: c++ char bitset

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

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

2 个答案:

答案 0 :(得分:12)

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

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

char c;
if (i <= CHAR_MAX) 
c = static_cast<char>( i );

答案 1 :(得分:0)

提供的解决方案对我不起作用。我当时在C ++ 14和g ++ 9中使用。但是,我可以通过以下方式获得它:

char lower = 'a';
bitset<8> upper(lower);
upper.reset(5);
cout << (char)upper.to_ulong() << endl;

我敢肯定,这可能不是最好的方法,但是它对我有用!