Ho una semplice domanda che mi confonde.Come leggere un byte e salvare il valore ASCII del byte nel numero intero in C++
Obiettivo: Voglio leggere un determinato byte da un file (ad esempio il primo byte) e creare int x con il valore ASCII di quel byte. Quindi, per esempio, se il byte/carattere è 'a', voglio che x sia 97 (= 61 in hex). Ho la seguente lettura del primo byte del file example.txt:
#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;
}
Problema: Se il primo byte è rappresentato da 08, allora davvero ricevo una potenza di 8. Ma se il byte è rappresentato entro 09, poi ottengo 0. Ho notato che mi sembra di ottenere il seguente byte a meno che il byte sia anche 09. Non so se il mio problema è solo quando il byte è rappresentato in ASCII di 09.
Domanda: Quindi, come leggo dire il primo (o terzo o qualsiasi altro) byte da un file e creare un int con il valore ASCII di quel byte?
(Sono su Windows XP)
Perché non hai appena letto in un 'char'? –
@ Corse di leggerezza in orbita: Grazie per il commento. Stavo cercando di leggere in un carattere, ma voglio il valore di ogni carattere e quando il valore era 09, stavo ottenendo il valore 0. (se questo ha senso?) – Thomas