我正在将一些代码从Matlab(我不熟悉)转换为C ++。部分代码读入原始数据文件,并将每8位输入到矩阵的元素中。
MATLAB:
header=fread(fid, 512, '*uint8');
同样,在C ++中我有:
fread(&q1[0][0], sizeof(uint8_t), 512, filepath);
当然,它们都在读同一个文件,它们吐出的值匹配到元素#33。
10
0
0
0
244
1
0
0
10
0
0
0
244
1
0
0
10
0
0
0
244
1
0
0
10
0
0
0
208
7
0
0
然后,当我的Matlab代码吐出180时,我的C ++程序吐出“92”。值开始分歧:
C++ / MATLAB
92 / 180
58 / 118
230 / 219
60 / 133
并继续进行而不匹配512字节的其余部分。
关于可能导致这种情况的任何想法?
答案 0 :(得分:1)
您是否使用二进制文件的'b'选项在C ++中打开文件?默认为't',文本模式,它将以不同的方式排列换行符/回车符。
编辑:假设这是Windows。如果不是Windows,那么你可以忽略它。
答案 1 :(得分:0)
事实证明,Matlab正在预处理我发送的原始文件,这改变了标题。虽然文件是“副本”(就Windows而言),但它们的标题不同,在打印出原始数据的开头时给出了不同的值。