C++ 是否可以转换位集<;8>;用c++;?
我有位集v8,其值类似于“11001101”,如何将其转换为字符?我需要一封信。比如字母“f”=01100110C++ 是否可以转换位集<;8>;用c++;?,c++,char,bitset,C++,Char,Bitset,我有位集v8,其值类似于“11001101”,如何将其转换为字符?我需要一封信。比如字母“f”=01100110 另外,谢谢你的帮助。我需要这个来用位来说明随机错误。例如,没有错误f,并且有类似的错误♥, 以此类推,所有文本都在文件中。在文本中,您可以清楚地看到这些错误。提供的解决方案对我不起作用。我使用的是C++14和g++9。然而,我通过以下方式获得了: unsigned long i = mybits.to_ulong(); unsigned char c = static_cast&l
另外,谢谢你的帮助。我需要这个来用位来说明随机错误。例如,没有错误f,并且有类似的错误♥, 以此类推,所有文本都在文件中。在文本中,您可以清楚地看到这些错误。提供的解决方案对我不起作用。我使用的是C++14和g++9。然而,我通过以下方式获得了:
unsigned long i = mybits.to_ulong();
unsigned char c = static_cast<unsigned char>( i ); // simplest -- no checks for 8 bit bitsets
charlower='a';
位集上(下);
复位(5);
拜托,你甚至没有更改示例值。我想这家伙实际上是在问如何将位集转换为单个字符,而不是数组。如果我理解了这个问题,它是关于从整个位集中获取单个标量字符(),而不是数组,尽管它是位集
,它不会包含无法在无符号字符中表示的值。因此,这可能是比char
更好的选择。你可以任由你的实现把超出范围的值转换成有符号的类型,我们不知道纯字符是否有符号。我假设8
就是一个例子。但我会解决这个问题。正因为如此,我说无符号字符
可能是一个更好的选择,尽管只是“可能”,因为如果提问者确实需要字符
,那么你首先说的是正确的,他们应该检查值。为什么要以8
为例,在这个问题中,它不仅被陈述了两次,而且是要转换为char
的位集的自然大小。“如何将位集
转换为字符”将是一个更愚蠢的问题…@SteveJessop:是的。这是进行检查的一个原因。我甚至没有想到使用bitset
而不是unsigned char
或uint8\t
的原因。我肯定有一些:-)
char c;
if (i <= CHAR_MAX)
c = static_cast<char>( i );