【发布时间】:2021-12-18 23:56:31
【问题描述】:
我对使用二进制文件非常陌生,所以我不知道如何正确使用此类文件。
我收到了一个 .dat 文件。我知道这是一个深度图——“深度图是一个写入二进制文件的双精度数组,每个数字大小为 64 位。 数组是逐行写入的,数组的尺寸是宽度*高度,行的高度乘以元素的宽度。该文件包含:高度、宽度、数据数组。”
我不知道如何读取双字符并创建一个数组。我有这个代码:
ifstream ifs(L"D:\\kek\\DepthMap_10.dat", std::ios::binary);
char buff[1000];
ifs.seekg(0, std::ios::beg);
int count = 0;
while (!ifs.eof()) {
ifs.read(buff, 1000);
cout << count++ << buff<< endl;
}
作为输出我有这样的东西
914 fф╦┼p@)щ▓p╧┬p@уЖФНВ┐p@уTхk↔╝p@юS@∟x╕p@УбХоЗ┤p@☺пC7b░p@лБy>%мp@y‼i ∟сзp@╚_-
我应该怎么做才能把它转换成双精度并接收一个数组?
附:您可以下载文件here(谷歌磁盘)。
【问题讨论】:
-
除此之外,如果数据中有嵌入的空值,使用
<<输出字符数组会在空字节处停止。您还知道生成这些文件的应用程序或语言吗? -
旁注:只有傻瓜或对其防病毒软件过于信任的人才会从某个随机互联网用户的谷歌驱动器下载随机文件。