Vorzeichenfehler bei static_cast?
-
Hallo, ich möchte ein Ascii Zeichen in ein int umwandeln. (den Ascii Code anzeigen)
Bei Ascii-Zeichen, wo das 8. Bit gesetzt wird (also eigentlich kein Ascii mehr), bekomme ich 4294967194123 heraus anstatt dezimal 154.
Die verwendete Variable ist ein String.chartInput.open("logfile.txt", ios::in|ios::binary); getline(chartInput, inputRow,'\n'); cout << "Boeses Zeichen " << inputRow[5] << " " << inputRow[5]+0 << endl; unsigned int messageDec[100]={0}; for(unsigned int convertPosition=0;convertPosition<20;convertPosition++) { messageDec[convertPosition]=static_cast<int>(inputRow[convertPosition]); }
messageDec unsigned zu deklarieren hilft nicht. Muss der string unsigned sein?
-
Dein code sieht ziemlich verwirrt aus.
#include <iostream> #include <string> using namespace std; int main() { string input; cin >> input; for(int i = 0; i < input.size(); i++) { cout << input[i] << ":\t" << static_cast<unsigned int>(input[i]) << endl; } return 0; }
So sieht das bei mir aus
-
Selbes Ergebnis.
Es hilft auch nicht den string auf <unsigned int> zu casten, dann hab ich eben die "4294967194123" statt der -104.Irgendwie müsste ich den string als unsigned deklarieren. Bei char geht das ja, aber bei String??
-
Bei strings geht's auch, sieht nur etwas komplizierter aus:
typedef basic_string<unsigned char> ustring;
(Achtung: für die Zusammenarbeit zwischen diesen ustring und den normalen IO-Streams mußt du selber sorgen)