【发布时间】:2022-01-06 15:01:20
【问题描述】:
我正在尝试从此文件中读取数据:
其中包含以二进制形式存储的 ascii 文本和浮点数。我正在尝试通过执行以下操作来阅读它:
QTextStream in(file);
QString line;
line = in.readLine();
while (!line.startsWith(QString("element vertex"))) {
line = in.readLine();
}
point_count = line.split(QString(" ")).last().toInt();
qDebug() << "PC: " << point_count;
while (line != "end_header") {
line = in.readLine();
}
QDataStream* stream = new QDataStream(file);
stream->skipRawData(in.pos());
stream->setFloatingPointPrecision(QDataStream::SinglePrecision);
float number;
(*stream) >> number;
qDebug() << "Float: " << number;
但是我读到-1.98117e+13,我猜是错的,我做错了什么?
【问题讨论】:
-
你能在
in.pos返回的位置用十六进制编辑器检查文件吗?另请注意,默认字节顺序是大端;您需要使用setByteOrder将其显式设置为小端。 -
当您想读取二进制数据时,您应该不使用 QTextStream 而是使用 QDataStream。
-
非常感谢@Botje!这就是问题所在,你想写一个答案而不是评论吗?
-
因为其他人可能会偶然发现这一点,当然。
标签: c++ qt point-clouds