如何读取一个字节并在c ++中保存整数字节的ASCII值

Tho*_*mas 5 c++ int ascii char

我有一个令我困惑的简单问题.

目标:我想从文件中读取一个给定的字节(比如第一个字节),并使用该字节的ASCII值生成int x.因此,例如,如果字节/字符是'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;
}
Run Code Online (Sandbox Code Playgroud)

问题:如果第一个字节用08表示,那么我确实得到了8的输出.但如果字节用09表示,那么我得到0.我注意到我似乎得到了下面的字节,除非那个字节也是09.我不知道我的问题是否仅在字节用ASCII表示为09时.

问题:那么如何读取文件中的第一个(或第三个或其他)字节,并使用该字节的ASCII值生成一个int?

(我在Windows XP上)

Mar*_*k H 3

这应该可以解决它。

 myFile >> noskipws >> b;
Run Code Online (Sandbox Code Playgroud)