2012-06-17 41 views
8

我有bitset < 8> V8,它的值是像「11001101」,我怎麼能把它轉換爲字符?我需要一封信。像字母「f」= 01100110。是否有可能將bitset <8>轉換爲C++中的char?

P.S.感謝幫助。我需要這個來說明隨機錯誤的位數。例如,如果沒有錯誤f,並且錯誤類似♥,所有文本都在文件中。在文字中,您可以清楚地看到這些錯誤。

+1

來吧,你甚至沒有改變示例值。 –

+3

我認爲這個人實際上是問如何將bitset <8>轉換爲單個字符而不是數組。 – 2012-06-17 01:20:29

+0

如果我理解這個問題,它是關於從整個bitset獲取單個標量char(),而不是一個數組 – alexm

回答

11
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

儘管如果它是位集<8>,它不會包含無法用'unsigned char'。所以這可能比'char'更好。而且你*可以*拋開自己的實現將超出範圍的值轉換爲簽名類型。 –

+0

我們不知道是否有普通的'char'簽名。我認爲'8'就是一個例子。但我會解決這個問題。 – dirkgently

+1

準確地說,這就是爲什麼我說'unsigned char'可能是更好的選擇,儘管只有「可能」,因爲如果提問者確實需要一個'char',那麼你先說的是正確的,他們應該檢查值。爲什麼假設'8'是一個例子,它不僅在問題中說過兩次,它是一個想要轉換爲'char'的自然大小的bitset。 「如何將一個bitset <127>'轉換成char」將會是一個非常愚蠢的問題...... –

相關問題