【发布时间】:2012-03-21 12:00:55
【问题描述】:
我有一个简单的问题让我感到困惑。
目标:我想从文件中读取给定的字节(比如第一个字节),并使用该字节的 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;
}
问题:如果第一个字节用 08 表示,那么我确实得到输出 8。但是如果字节用 09 表示,那么我得到 0。我注意到我似乎获取以下字节,除非该字节也是 09。我不知道我的问题是否只是当字节以 ASCII 由 09 表示时。
问题:那么我如何读取文件中的第一个(或第三个或其他)字节并使用该字节的 ASCII 值生成一个 int?
(我在 Windows XP 上)
【问题讨论】:
-
你为什么不直接读到
char? -
@轨道上的轻盈竞赛:感谢您的评论。我试图读入一个字符,但我想读取每个字符的 ascii 值,当值为 09 时,我得到的值为 0。(如果这有意义?)