Qt 如何将python的字节数组转换为QByteArray?

Qt 如何将python的字节数组转换为QByteArray?,qt,qt4,pyqt,pyqt4,pyside,Qt,Qt4,Pyqt,Pyqt4,Pyside,我有一个python的字节数组 b=b‘你好’ 我想用它作为QtextStream的参数来创建一个QtextStream对象,但是QtextStream接受的是Qt的字节数组而不是Python的。我想知道有没有办法将Python的字节数组转换成QByteArray 我已经测试了下面的代码,似乎我不能用这种方式来做 >>> b=b'hello' >>> from PyQt4.QtCore import * >>> c=QTextStream(Q

我有一个python的字节数组 b=b‘你好’ 我想用它作为QtextStream的参数来创建一个QtextStream对象,但是QtextStream接受的是Qt的字节数组而不是Python的。我想知道有没有办法将Python的字节数组转换成QByteArray

我已经测试了下面的代码,似乎我不能用这种方式来做

>>> b=b'hello'
>>> from PyQt4.QtCore import *
>>> c=QTextStream(QByteArray(b)).readAll()
>>> c
''
>>>
我猜问题在于QByteArray对象被构造,传递到QTextStream,然后立即被销毁。QTextStream不复制数据,它只保留一个指向数据源的指针。由于源已销毁,因此无法再读取任何数据。我甚至在尝试使用您代码的一些变体调用readAll时,遇到了分段错误。因此,解决方案是在需要时将QByteArray对象存储在变量中

最初的问题“如何将python的字节数组转换为QByteArray?”与您的问题无关。很容易看出,可以使用显而易见的方法来完成:

>>> QByteArray(b)
PyQt4.QtCore.QByteArray('hello')

您说过“我甚至在尝试使用代码的一些变体调用readAll时遇到了分段错误”您能给我看一下您的代码吗?这段代码使我的Python交互式shell崩溃:b=b'test';c=QTextStreamQByteArrayb;c、 readAllIn在本例中,表示有人试图使用已删除对象的数据。如果有人编写C++代码,就可以观察到完全相同的行为。pyqt5.qtCy.qBytEray.AppDead Hely'是在pyqt5+python 3中只适用于我的。x@Mark任何尝试使用PyQt5:PyQt5.QtCore.QByteArrayb'hello'的人也应该在这里工作。
>>> QByteArray(b)
PyQt4.QtCore.QByteArray('hello')