【发布时间】:2017-07-10 09:16:30
【问题描述】:
主要问题
我想了解如何在 Python 中读取 C++ unsigned short。我试图使用np.fromfile('file.bin',np.uint16),但它似乎不起作用。将此作为主要问题。
案例研究:
为了提供更多的比赛
我有一个 unsigned shorts 数组,使用 C++ 和 QT 的 QDataStream 方法导出为二进制文件。
标题:
QVector<unsigned short> rawData;
main.cpp
QFile rawFile(QString("file.bin"));
rawFile.open(QIODevice::Truncate | QIODevice::ReadWrite);
QDataStream rawOut(&rawFile);
rawOut.writeRawData((char *) &rawData, 2*rawData.size());
rawFile.close();
我正在尝试使用 Python 和 numpy 阅读它,但我找不到如何阅读无符号短裤。来自literature 的无符号短裤应该是 2 个字节,所以我尝试使用以下方法读取它:
import numpy as np
np.readfromfile('file.bin',np.uint16)
但是,如果我将读取它的单个 unsigned_value 与 python 进行比较,并使用 C++ 将其打印为字符串:
Qstring single_value = QString::number(unsigned_value)
它们是不同的。
【问题讨论】:
-
您能告诉我们您是如何“导出”数据的吗?最好采用Minimal, Complete, and Verifiable Example 的形式。
-
@Someprogrammerdude 希望够了
-
我会尝试
endedness。尝试“u2”。 docs.scipy.org/doc/numpy/reference/arrays.dtypes.html -
@hpaulj 感谢解决方案是使用 '>u2' 您可以将您的评论正式化为答案吗?那我能接受吗?