You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中如何对字符串使用memoryview?解决类型错误问题

解决memoryview无法接收字符串的问题

你遇到的这个报错很典型——Python 3里的str是Unicode字符序列,它没有内存缓冲区接口,而memoryview专门用来操作字节级别的内存缓冲区,所以直接传字符串肯定会报错。

解决方法很简单,只需要把字符串转换成字节类对象就行,这里有两种常用方式:

  • 转换成不可变的bytes对象:用字符串的encode()方法指定编码(通常用utf-8),这样就能得到memoryview能处理的字节缓冲区:

    mv = memoryview("this is a string".encode('utf-8'))
    # 现在可以正常操作mv了,比如截取部分字节
    print(mv[5:7].tobytes())  # 输出 b'is'
    
  • 转换成可变的bytearray对象:如果需要通过memoryview修改底层内容,就用bytearray来转换,它是可修改的字节数组:

    mv = memoryview(bytearray("this is a string", 'utf-8'))
    # 修改第一个字节(把小写t改成大写T)
    mv[0] = ord('T')
    print(mv.tobytes())  # 输出 b'This is a string'
    

简单总结下:memoryview只认字节类型的缓冲区,Unicode字符串必须先编码成字节序列才能被它处理,选bytes还是bytearray取决于你是否需要修改底层内容。

内容的提问来源于stack exchange,提问作者pgmank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:48