zoukankan      html  css  js  c++  java
  • Bytes类型

    Bytes类型

    一、定义

    bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型。

    b'xe5xb0x8fxe7x8cxbfxe5x9cx88' 
    '''
    b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。 
    utf-8是3个字节代表一个中文,所以以上正好是9个字节
    '''
    

    二、Bytes类型的作用

    计算机只能存储2进制,要想将字符、图片、视频、音乐等存在硬盘上,也必须以正确的方式编码成2进制后再存储。

    • 对于文字,我们可以用gbk编码,也可以用utf-8、ASCII编码。

    • 对于图片,必须编码成PNG,JPEG等格式。

    • 对于音乐,必须编码成MP3,WAV等。

    在python中,数据转成2进制后不是直接以010101的形式表示的,而是用一种叫bytes(字节)的类型来表示的。字符串转成bytes后长成这个样子:

    s = '小明'
    a = s.encode('utf-8')
    print(a)
    

    在python中,字符串必须编码成bytes后才能存到硬盘上,但是为什么之前学的文件操作并没有把字符串编码后再存储?那是因为python默认帮你干了这个事了,如python3中文件存储的默认编码是utf-8。

    当然,你可以自行改变文件的默认编码。

    f = open(file="encode_test",encoding="gbk",mode="w")
    

    这样,你写入的数据就是按gbk编码的了。

    三、以二进制模式操作文件

    当然,在打开文件时如果你不想让open这个对象帮你自动编码,你也可以直接往文件里存入bytes数据。

    f = open(file="encode_test",mode="wb") # wb以2进制模式打开文件
    s = "自学编程,谁不上小猿圈".encode("utf-8")  # 自行编码
    print(s )
    f.write(s)
    f.close()
    

    输出结果:

    b'xe8x87xaaxe5xadxa6xe7xbcx96xe7xa8x8bxefxbcx8cxe8xb0x81xe4xb8x8dxe4xb8x8axe5xb0x8fxe7x8cxbfxe5x9cx88'
    

    以2进制模式打开文件的方式有:

    • wb 二进制创建
    • rb 二进制读
    • ab 二进制追加
  • 相关阅读:
    Vue 踩坑-2 vue文件中style的scoped属性
    IIS发布Vue项目F5刷新404问题
    .NET Core 3.1 + Hangfire 配置以及踩坑
    Vue 踩坑-1-跨域问题
    Docker 部署VUE项目
    (转)如何利用EnteLib Unity Interception Extension 和PIAB实现Transaction的Call Handler
    Unity 中的策略注入(转)
    面向方面的编程、侦听和 Unity 2.0(转)
    Unity 中的拦截功能(转)
    [转]推荐分享22个优秀的项目管理与协作工具
  • 原文地址:https://www.cnblogs.com/Kwan-C/p/11480678.html
Copyright © 2011-2022 走看看