Tôi có một câu hỏi đơn giản khiến tôi khó hiểu.Cách đọc một byte và lưu giá trị ASCII của byte theo số nguyên trong C++
Mục tiêu: Tôi muốn đọc một byte nhất định từ tệp (nói byte đầu tiên) và tạo int x với giá trị ASCII của byte đó. Vì vậy, ví dụ, nếu byte/ký tự là 'a', tôi muốn x là 97 (= 61 trong hex). Tôi đã đọc những điều sau byte đầu tiên của tập tin 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;
}
Vấn đề: Nếu byte đầu tiên được đại diện bởi 08, sau đó thực sự tôi nhận được một sản lượng 8. Nhưng nếu byte được biểu diễn bởi 09, sau đó tôi nhận được 0. Tôi đã nhận thấy rằng tôi dường như nhận được các byte sau trừ khi byte đó cũng là 09. Tôi không biết nếu vấn đề của tôi là chỉ khi byte được đại diện trong ASCII bởi 09.
Câu hỏi: Vậy làm thế nào để tôi đọc nói byte đầu tiên (hoặc thứ ba hoặc thứ gì đó) từ một tệp và tạo một giá trị int với giá trị ASCII của byte đó?
(Tôi đang sử dụng Windows XP)
Tại sao bạn không chỉ đọc vào một 'char'? –
@ Cuộc đua nhẹ nhàng trong quỹ đạo: Cảm ơn nhận xét. Tôi đã cố gắng để đọc vào một char, nhưng tôi muốn giá trị ascii của mỗi nhân vật và khi giá trị là 09, tôi đã nhận được giá trị 0. (nếu điều đó có ý nghĩa?) – Thomas