首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeError: QByteArray中预期长度为1的字节还是ASCII字符串?

TypeError: QByteArray中预期长度为1的字节还是ASCII字符串?
EN

Stack Overflow用户
提问于 2016-01-20 00:42:03
回答 1查看 2K关注 0票数 3

我希望这能奏效。但事实并非如此。我做错什么了?

代码语言:javascript
代码运行次数:0
运行
复制
    from  PyQt5.QtCore import  QByteArray

    str = 'foobar'
    b = bytes(str, 'UTF-8')

    print (b)
    print (len(b))

    arr = QByteArray(len(b), b)

但我明白:

代码语言:javascript
代码运行次数:0
运行
复制
b'foobar'
6
Traceback (most recent call last):
  File "pyqt_wtf_again.py", line 9, in <module>
    arr = QByteArray(len(b), b)
TypeError: bytes or ASCII string of length 1 expected

这样不就行了吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-10 20:59:55

下面是来自QByteArray的C++ Qt文档构造函数

代码语言:javascript
代码运行次数:0
运行
复制
QByteArray(QByteArray &&other)
QByteArray(const QByteArray &other)
QByteArray(qsizetype size, char ch)
QByteArray(const char *data, qsizetype size = -1)

第三个是您正在使用的,但这需要一个字符,而不是字符串。如果您将代码更改为

代码语言:javascript
代码运行次数:0
运行
复制
    from  PyQt5.QtCore import  QByteArray

    str = 'f'
    b = bytes(str, 'UTF-8')

    print (b)
    print (len(b))

    arr = QByteArray(len(b), b)

它没有问题,因为f是一个单一的字符。PyQt只是C++ Qt的一个接口,所以我认为关于python的QByteArray文档只是缺少显示这个构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34889572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档