Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PySide和Python3.X中向QDataStream写入字节?_Python_Qt_Pyside_Binary Data_Qdatastream - Fatal编程技术网

如何在PySide和Python3.X中向QDataStream写入字节?

如何在PySide和Python3.X中向QDataStream写入字节?,python,qt,pyside,binary-data,qdatastream,Python,Qt,Pyside,Binary Data,Qdatastream,在QDataStream的Qt文档中,它说 QDataStream类向QIODevice提供二进制数据的序列化 这就是我想做的。我想在Python3.X上将PySide中的字节发送到QDataStream writeRawData但是需要unicode作为输入 import zlib from PySide import QtCore file = QtCore.QFile("test.dat") file.open(QtCore.QIODevice.WriteOnly) data = "s

在QDataStream的Qt文档中,它说

QDataStream类向QIODevice提供二进制数据的序列化

这就是我想做的。我想在Python3.X上将PySide中的字节发送到
QDataStream

writeRawData
但是需要
unicode
作为输入

import zlib
from PySide import QtCore

file = QtCore.QFile("test.dat")
file.open(QtCore.QIODevice.WriteOnly)

data = "some text"
compressed_data = zlib.compress(data.encode()) # type is now bytes

out = QtCore.QDataStream(file)
out.writeRawData(compressed_data)
给出一个
类型错误

TypeError: 'PySide.QtCore.QDataStream.writeRawData' called with wrong argument types:
  PySide.QtCore.QDataStream.writeRawData(bytes)
Supported signatures:
  PySide.QtCore.QDataStream.writeRawData(unicode, int)
此外,PySide(1.2.2)未实现来自
QDataStream
writeBytes

那么,如何在PySide和Python3.X中通过
QDataStream
发送二进制数据呢



背景:最后,我想通过
QDataStream
方便地将二进制数据发送到
QSocket
,并在使用
zlib
之前对其进行压缩。我可以回答我自己的问题。解决方案是将字节字符串包装在
QByteArray
中,并使用
QDataStream
的左/右移位运算符

写作范例:

# wrap data (type byte) in QByteArray
bytearray = QtCore.QByteArray(data)

# write to data stream
qdatastream << bytearray
# allocate empty qbytearray
bytearray = QtCore.QByteArray()

# read from data stream
qdatastream >> bytearray