Как читать байт и сохранять значение байта ASCII в виде целого числа в C ++

у меня есть простой вопрос, который меня смущает.

Цель : я хочу прочитать заданный байт из файла (скажем, первый байт) и создать int x со значением ASCII этого байта. Так, например, если байт / символ - 'a', я хочу, чтобы x было 97 (= 61 в шестнадцатеричном формате). У меня есть следующее чтение первого байта файла 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;
}

Проблема : Если первый байт представлен как 08, то на самом деле я получаю результат 8. Но если байт представлен как 09, тогда я получаю 0. Я заметил, что, кажется, получаю следующий байт, если только этот байт тоже не 09. Я не знаю, возникает ли моя проблема только тогда, когда байт представлен в ASCII цифрой 09.

Вопрос : Итак, как мне прочитать, скажем, первый (или третий или любой другой) байт из файла и создать int со значением ASCII этого байта?

(Я использую Windows XP)

5
задан Thomas 3 March 2012 в 01:30
поделиться