如何使用Python阅读未签名的短片? 主要问题 我想了解如何在Python中读取C++无符号短。我试图使用np.fromfile('file.bin',np.uint16),但它似乎不起作用。将此作为主要问题 案例研究:

如何使用Python阅读未签名的短片? 主要问题 我想了解如何在Python中读取C++无符号短。我试图使用np.fromfile('file.bin',np.uint16),但它似乎不起作用。将此作为主要问题 案例研究:,python,c++,qt,numpy,Python,C++,Qt,Numpy,为了给更多的比赛 我有一个数组的代码>未签名的短裤用C++和QDATASTRAM 方法导出为二进制文件,qt. 标题: QVector<unsigned short> rawData; 我试图用Python和numpy阅读它,但我找不到如何阅读未签名的短片。“来自未签名短片”应为2个字节,因此我尝试使用以下方法读取它: import numpy as np np.readfromfile('file.bin',np.uint16) 但是,如果我将单个无符号_值与python进行比

为了给更多的比赛 我有一个数组的代码>未签名的短裤用C++和QDATASTRAM 方法导出为二进制文件,qt.

标题:

QVector<unsigned short> rawData;
我试图用Python和numpy阅读它,但我找不到如何阅读未签名的短片。“来自未签名短片”应为2个字节,因此我尝试使用以下方法读取它:

import numpy as np
np.readfromfile('file.bin',np.uint16)
但是,如果我将单个无符号_值与python进行比较,并将其作为字符串在C++中使用:

Qstring single_value = QString::number(unsigned_value)
它们是不同的。

看看

示例输出:

>>>[(1,), (2,), (3,)]
看看

示例输出:

>>>[(1,), (2,), (3,)]
rawOut.writeRawData((char*)&rawData,2*rawData.size())正在文件中写入大量垃圾。QVector不能像您试图做的那样直接强制转换为
short
数组

使用下面的代码编写数据

for(const auto& singleVal : rawData)
rawOut << singleVal;
for(const auto&singleVal:rawData)
rawOut
rawOut.writeRawData((char*)&rawData,2*rawData.size())正在文件中写入大量垃圾。QVector不能像您试图做的那样直接强制转换为
short
数组

使用下面的代码编写数据

for(const auto& singleVal : rawData)
rawOut << singleVal;
for(const auto&singleVal:rawData)

拉乌特我会尝试亲昵。试试
'u2'

“>”
反转2个字节的顺序

In [674]: np.array(123, np.dtype('>u2')).tostring()
Out[674]: b'\x00{'
In [675]: np.array(123, np.dtype('<u2')).tostring()
Out[675]: b'{\x00'
In [678]: np.array(123, np.uint16).tostring()
Out[678]: b'{\x00'
[674]中的
:np.array(123,np.dtype('>u2')).tostring()
Out[674]:b'\x00{'

在[675]中:np.array(123,np.dtype)(“我会尝试使用endedness.Try
'u2'

“>”
反转2个字节的顺序

In [674]: np.array(123, np.dtype('>u2')).tostring()
Out[674]: b'\x00{'
In [675]: np.array(123, np.dtype('<u2')).tostring()
Out[675]: b'{\x00'
In [678]: np.array(123, np.uint16).tostring()
Out[678]: b'{\x00'
[674]中的
:np.array(123,np.dtype('>u2')).tostring()
Out[674]:b'\x00{'

在[675]:np.array(123,np.dtype('你能告诉我们你是如何“导出”数据的吗?最好是以一种形式。@Someprogrammerdude我希望它是足够的,我会尝试
相关性
。试试“u2”。@hpaulj谢谢这个解决方案使用的是'>u2''你能把你的评论形式化为一个答案吗?这样我就能接受它吗?你能告诉我们你是如何回答的吗“出口"数据?最好是一种形式。@Someprogrammerdude我希望它足够我用
endedness
。试试“u2”。@hpaulj感谢这个解决方案使用了“>u2”你能把你的评论形式化为一个答案吗?这样我就可以接受它了吗?Thansk,但我必须写一个完整的数组,而不是一个值。@GM是的,那写一个完整的数组是行不通的它说ISO C++禁止声明“单值”旧编译器……(const Auto&SunLVAL:RWDATA)<代码> > <代码>前缀(const unStand Stand and SunLayVaLaDATA)< /CONT> Shansk,但我必须写一个完整的数组,而不是一个值。“GM是的,写一个完整的数组,它不工作。它说ISO C++禁止声明“SunLalVar旧编译器”……(const Auto&SunLVAL:RWDATA)<代码> > <代码>前缀(const unSalm Stand and SunLayVal,RaWDATA)< /C>