2012-06-17 5 views
8

Ich habe Bitset < 8> v8 und sein Wert ist so etwas wie "11001101", wie kann ich es in char konvertieren? Ich brauche einen einzigen Brief. Wie Buchstabe "f" = 01100110.Ist es möglich, Bitset <8> in char zu char umzuwandeln?

P.S. Danke für die Hilfe. Ich brauchte das, um zufällige Fehler in Bits zu veranschaulichen. Zum Beispiel ohne Fehler f, und mit einem Fehler wie ♥, usw. mit allen Text in der Datei. Im Text können Sie solche Fehler deutlich sehen.

+1

Komm schon, du hast nicht einmal den Beispielwert geändert. –

+3

Ich denke, dieser Typ fragt eigentlich, wie Bitsatz <8> in ein einziges Zeichen, nicht ein Array zu konvertieren. –

+0

Wenn ich die Frage verstanden habe, geht es darum, ein einzelnes Skalar char() vom gesamten Bitset zu bekommen, kein Array – alexm

Antwort

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

Etwas im Sinne des Obigen sollte funktionieren. Beachten Sie, dass die Bit-Feld einen Wert enthalten kann, die nicht eine einfache char (es ist die Umsetzung festgelegt, ob es signiert ist oder nicht) dargestellt werden kann - so sollten Sie immer prüfen, vor dem Gießen.

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

Obwohl es ein 'bitset <8>' ist, wird es keinen Wert enthalten, der nicht in 'unsigned' dargestellt werden kann char '. Also könnte das eine bessere Option sein als 'char'. Und Sie * könnten * sich einfach der Gnade ausliefern, dass Ihre Implementierung Werte außerhalb des Bereichs in signierte Typen umwandelt. –

+0

Wir wissen nicht, ob Plain 'char' signiert ist. Ich nahm "8" als Beispiel an. Aber ich werde das reparieren. – dirkgently

+1

Genau deshalb sage ich 'unsigned char' könnte eine bessere Option sein, obwohl nur" könnte ", denn wenn der Frager wirklich ein' char' benötigt, dann ist das, was du zuerst gesagt hast, korrekt, sie sollten den Wert überprüfen. Und warum angenommen, dass "8" ein Beispiel ist, wird es nicht nur zweimal in der Frage angegeben, es ist eine natürliche Größe von Bitset, die in 'char' umgewandelt werden soll. „Wie konvertiere ich ein' bitset <127> 'char“ eine viel dümmer Frage gewesen wäre ... –

Verwandte Themen