【问题标题】:NameError: name 'buffer' is not definedNameError:名称“缓冲区”未定义
【发布时间】:2020-10-21 07:19:35
【问题描述】:

Python2 代码:

x = buffer(chr(0) * 32)

python3 的等价物是什么? 我试图用memoryview() 替换缓冲区,但名称错误变成了类型错误:TypeError: memoryview: a bytes-like object is required, not 'str'.

我很确定这应该是一个字符串而不是一个字节。

有人可以帮我吗?

Buffer function for python 3+ 不是答案!

【问题讨论】:

  • @ThierryLathuille 请强调这两个问题的相似之处以及另一个如何回答这个问题.. python3.py,请解释差异以支持您声称该问题没有解决方案的说法。
  • 类似x = memoryview(b'\x00'*32) ?
  • 我在问题中就说过了! “我试图用 memoryview() 替换缓冲区,但名称错误变成了类型错误:TypeError: memoryview: a bytes-like object is required, not 'str'。”链接的“重复”没有回答!我将代码更改为: x = memoryview(b"chr(0) * 32") 这看起来很糟糕,我确信这不是 d 的正确方法,但至少所有错误都消失了。
  • 我做了:x = memoryview(b"chr(0) * 32") 但我认为解决方案是@Jean-FrançoisFabre 发布的解决方案

标签: python python-3.x buffer memoryview


【解决方案1】:

改编来自Buffer function for python 3+的答案

x = memoryview(b'\x00'*32)`

memoryview 需要字节。 Python 3 现在区分了字节和字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2019-01-26
    • 2021-10-05
    • 2017-08-16
    相关资源
    最近更新 更多