一个二进制文件,我用matlab读取的结果如下:
代码:
>> fileName='1.dat' ;
>> fid=fopen(fileName,'rb');
>> HEADER = fread(fid,1,'ulong');
结果
HEADER = 13;
matlab读取的结果是正确的,然后我用qt读取:
代码:
Qstring = “1.dat”;
QFile myfile(filename);
myfile.open(QIODevice::ReadOnly);
QDataStream data(&myfile);
unsigned fileno;
data>>fileno;
结果为:fileno = 218103808
我一直搞不清楚是哪里的问题,后来我把218103808转换成16进制为D000000,而十六进制D000000按照大头模式对应的十进制就是13,而且我用二进制编辑器看了,第一个数确实是0d 00 00 00。
产生这样的错误是怎么回事,按理说unsigned 和unsigned long对应的数值范围是一样的啊。
如果在qt里面这样定义:unsigned long fileno;
会报错:D:\QT_project\DataPlayBack\mainwindow.cpp:63: error: no match for 'operator>>' (operand types are 'QDataStream' and 'long unsigned int')
data>>fileno;
^
请问这个问题该怎么解决,谢谢各位,刚开始学qt和c++。