Mam proste pytanie, które mnie myli.Jak czytać bajt i zapisać wartość ASCII w liczbie całkowitej w C++
bramki: Chcę przeczytać dany bajt z pliku (powiedzmy pierwszy bajt) i zrobić int X o wartości ASCII tego bajta. Na przykład, jeśli bajt/znak jest "a", chcę, żeby x był równy 97 (= 61 na heksie). Mam następujący czytając pierwszy bajt example.txt Plik:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
unsigned int x;
unsigned char b;
ifstream myFile ("example.txt", ios::out | ios::binary);
myFile.seekg (0, ios::beg);
myFile >> b;
x = (unsigned int)b;
cout << hex << x;
return b;
}
Problem: Jeśli pierwszy bajt jest reprezentowany przez 08, to rzeczywiście mam moc 8. Ale jeśli bajt jest reprezentowany do 09, to dostaję 0. Zauważyłem, że wydaje się, że otrzymuję następujący bajt, chyba że ten bajt to także 09. Nie wiem, czy mój problem jest tylko wtedy, gdy bajt jest reprezentowany w ASCII przez 09.
Pytanie: Więc jak mogę przeczytać pierwszy (lub trzeci) bajt z pliku i utworzyć int z wartością ASCII tego bajtu?
(Jestem w systemie Windows XP)
Dlaczego po prostu nie czytać w 'char'? –
@ Lekkość Wyścigi na orbicie: Dzięki za komentarz. Próbowałem odczytać char, ale chcę ascii wartości każdej postaci, a gdy wartość wynosiła 09, otrzymywałem wartość 0. (jeśli to ma sens?) – Thomas