9

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

PS感谢您的帮助。我需要这个来说明位中的随机错误。例如,没有错误 f,有错误,比如 ♥,等等,所有文本都在文件中。在文本中,您可以清楚地看到此类错误。

4

2 回答 2

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 );
于 2012-06-17T01:44:25.673 回答
0

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

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

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

于 2020-06-28T11:19:31.840 回答