从.raw文件读取数据

Reading data from .raw file

本文关键字:数据 读取 文件 raw      更新时间:2023-10-16

我有8位数据的灰度RAW文件,我试图使用简单的程序读取数据:

#include <fstream>
#include <iostream>
using namespace std;
int main(){
    char fileName[80] = "TEST.raw";
    //char buffer[255];
    ifstream fin(fileName);
    char ch;
    int i = 0;
    while (fin.get(ch)){
        cout << (unsigned int)ch << " ";
        i++;
    }
    cout << endl;
    cout << "i = " << i;
    fin.close();
    cin >> ch;
}

有些值比某些特定值高,我得到奇怪的输出。当我应该得到这样的东西时:

(...) 34    34    34    36    43    59    88    123    151    166 (...)

:

(...) 34 34 34 36 43 59 88 123 4294967191 4294967206 (...)

我想这是一个简单的问题,但我不知道如何正确地做。

ch变量声明更改为

   unsigned char ch;
// ^^^^^^^^

并按照文档中的建议将fin.get(ch)更改为

while (fin >> ch)

修复此行为。

char值需要显式地为signedunsigned,当您使用它们作为整数时。所以如果一个值大于126,它被解释为一个负数。转换为unsigned int的负数将设置这些值的高位。