Я пытаюсь прочитать файлы облака точек .bin. Я нашел эту ссылку, предлагающую код Python, который я могу преобразовать на C ++. Я придумал следующий код, но точность чисел с плавающей запятой отличается от результатов, которые я получил при запуске кода Python в приведенной выше ссылке. Я заметил, что некоторые значения координат в середине полностью отсутствуют, или, другими словами, количество значений с плавающей запятой, полученных из python, больше, чем у кода C ++:
std::ifstream file("C:/Users/hedey/OneDrive/Documents/Research_papers/STDF/data_object_velodyne/training/velodyne/001984.bin", ios::in | std::ios::binary);
char header[4];
float item;
if (file.is_open())
{
file.read((char*)&header, 4);
cout << char(header) << endl;
while (!file.eof())
{
file.read((char*)&item, 4);
cout << float(item) << endl;
}
file.close();
}
Вот ссылка на bin-файл, который я пытался прочитать: https://www.dropbox.com/s/m6gney49lmr5vg9/001984.zip?dl=0
Кроме того, строка заголовка не отображается с использованием приведенного выше кода C ++. Что может быть не так с моим кодом? как это может быть улучшено?
F0 A7 92 41
, три из них не печатаются; ты уверен, что сможешьcout
их? Ваше чрезмерное приведение типов вызывает подозрение. Не могли бы вы попробовать читать ваши поплавки напрямую:file >> item;
? - person Vlad Feinstein   schedule 05.01.2021header
, преобразованный вchar
. Мусор на входе - мусор на выходе ... - person Vlad Feinstein   schedule 05.01.2021