我有bitset< 8> v8及其值类似于“11001101”,如何将其转换为char?我需要一封信。像字母“f”= 01100110。
P.S。感谢帮助。我需要这个来说明位中的随机错误。例如,没有错误f,并且错误类似于♥,依此类推文件中的所有文本。在文本中,您可以清楚地看到这些错误。
答案 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;
我敢肯定,这可能不是最好的方法,但是它对我有用!