1 Byte in long
-
Hallo Leute,
auch wenn das Thema schon leidig oft im Netz besprochen wurde. Ich habe das Problem noch immer und
ich hoffe ihr könnt mir bei helfen:ich möchte von einer Binärdatei Byteweise Hexzahlen lesen und dezimal ausgeben. Als Variable zum einlesen habe ich BYTE und char ausprobiert, teilweise auch dort mit Erfolg, wo die Dezimalzahlen auch nur ein Byte lang sein müssen. Will ich die Bytes in eine Longvariable reinstecken (char oder BYTE einlesen und konvertieren mit strtol, atol, memcpy usw.)meckert z.T der compiler nicht rum, aber beim Testen erscheint, wenn die Datentypen dann konvertiert werden sollen, eine Fehlermeldung in strtol.c zeile 94
Was mache ich falsch? habt ihr Lösungen zum Problem?
MFC-Projekt, VS 2008unsigned int könnte ich auch an stelle von long nehmen ist aber schwieriger zu handeln, oder?
char str1, str2; ... CFile datei( m_pathname, CFile::modeRead); datei.Read( &str1, sizeof(str1) ); m_strEdit1 = int( str1 ); //m_strEdit1 ist int, Ausgabe funktioniert datei.Read(&str2, sizeof(str2)); nextadr = atol(reinterpret_cast<const char*>(str2)); //Funktioniert nicht! m_nextadr = nextadr ; //beides long
Micha
-
str2 bezieht sich auf den Wert des Chars.
&str2 ist seine Adresse.Und ein char ist ein einzelner Buchstabe und keine nullterminierte Zeichenkette.
Sieh dir noch mal genau an, wie das mit den C Strings ist und was für einen Parameter atol erwartet.
-
char c = 'x'; //einzelnes Zeichen (Character) char *s = "Hallo!"; //Array von chars (also ein String) //s[0]=='H' //s[1]=='a' //s[2]=='l' //s[3]=='l' //s[4]=='o' //s[5]=='!' char c = 'Hallo!'; //gibt es nicht!