我有一个python的字节数组 B = b'hello” 我想用它作为QtextStream的参数来创建一个QtextStream对象,但QtextStream接受Qt的字节数组而不是Python的。我不知道有没有将python的字节数组转换为QByteArray?
我已经测试了以下代码,似乎我不能这样做。
>>> b=b'hello'
>>> from PyQt4.QtCore import *
>>> c=QTextStream(QByteArray(b)).readAll()
>>> c
''
>>>
答案 0 :(得分:0)
我想问题是构造QByteArray
对象,传递给QTextStream
然后立即销毁。 QTextStream
不会复制数据,它只保留指向数据源的指针。由于源被破坏,因此无法读取更长的数据。尝试使用代码的某些变体调用readAll()
时,我甚至设法出现分段错误错误。因此,解决方案是将您的QByteArray
对象存储在变量中,只要您需要它。
>>> buf = QByteArray(b) >>> c = QTextStream(buf).readAll() >>> c PyQt4.QtCore.QString(u'hello')
最初的问题'如何将python的字节数组转换为QByteArray?'不要提及你的问题。很容易看出它可以用显而易见的方式完成:
>>> QByteArray(b)
PyQt4.QtCore.QByteArray('hello')