zoukankan      html  css  js  c++  java
  • Python(00):bytes字节串类型及用法

    一、bytes 字节串类型概述

    Python 3 新增了 bytes 类型,用于代表字节串,是一个类型,不是C#中的列表。

    由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

    1、字节串与字符串之间的区别

    bytes 和 str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列。

    1. 字符串(str)由多个字符组成,以字符为单位进行操作;
    2. 字节串(bytes)由多个字节组成,以字节为单位进行操作。

    2、字节概述

    计算机底层有两个基本概念:位(bit)和字节(Byte),其中

    1. bit 代表 1 位,要么是 0,要么是 1;
    2. Byte 代表 1 字节,1 字节包含 8 位。

    在字节串中每个数据单元都是字节,也就是 8 位,其中每 4 位(相当于 4 位二进制数,最小值为 0 ,最大值为 15)可以用一个十六进制数来表示,因此每字节需要两个十六进制数表示

    b'xe6x88x91xe7x88xb1Pythonxe7xbcx96xe7xa8x8b'# 比如 :xe6 就表示 1 字节,其中 x 表示十六进制,e6 就是两位的十六进制数。

    Unicode 字符集,包括汉字,为两个字节(16 位,支持 65536 个字符编号)。实际使用的 UTF-8, UTF-16 等其实都属于 Unicode 字符集。

    二、字节串与字符串之间的转换

    bytes 对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串可以转换成字节串;反过来,字节串也可以恢复成对应的字符串。

    1、将一个字符串转换成 bytes 对象

    如果希望将一个字符串转换成 bytes 对象,有如下三种方式:

    下面程序中 b1~b5 都是字节串对象,该程序示范了以不同方式来构建字节串对象。其中 b2、b3 都是直接在 ASCII 字符串前添加b前缀来得到字节串的:b4 调用 bytes() 函数来构建字节串;而 b5 则调用字符串的 encode 方法来构建字节串。

    1. 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加 b 来构建字节串值。
    2. # 创建一个空的bytes
      b1 = bytes()
      # 创建一个空的bytes值
      b2 = b''
      # 1、通过b前缀指定hello是bytes类型的值
      b3 = b'hello'
      print(b3)
      print(b3[0])
      print(b3[2:4])
      
      #b'hello'
      #104
      #b'll'
    3. 调用 bytes() 函数(其实是 bytes 的构造方法)将字符串按指定字符集转换成字节串,
      如果不指定字符集,默认使用 UTF-8 字符集。
    4. # 调用bytes方法将字符串转成bytes对象
      b4 = bytes('我爱Python编程',encoding='utf-8')
      print(b4)
      #b'xe6x88x91xe7x88xb1Pythonxe7xbcx96xe7xa8x8b'
    5. 调用字符串本身的encode() 方法将字符串按指定字符集转换成字节串(常用)
      如果不指定字符集,默认使用 UTF-8 字符集。
    6. # 利用字符串的encode()方法编码成bytes,默认使用utf-8字符集
      b5 = "学习Python很有趣".encode('utf-8')
      print(b5)
      #b'xe5xadxa6xe4xb9xa0Pythonxe5xbex88xe6x9cx89xe8xb6xa3'

    从上面的输出结果可以看出,字节串和字符串非常相似,只是字节串里的每个数据单元都是 1 字节。

    2、decode():将一个bytes 对象转换成字符串

    如果程序获得了 bytes 对象,也可调用 bytes 对象的 decode() 方法将其解码成字符串,

    #将bytes 对象解码成字符串,默认使用UTF-8进行解码
    st = b5.decode('utf-8')
    print(st)#学习Python很有趣
  • 相关阅读:
    Apache 安装 静态编译 动态编译
    Vlan 间路由的方法
    一个无限加载瀑布流jquery实现
    用ajax查询天气
    一个简单移动页面ionic打包成app
    时隔一年再读到the star
    轮播图原生js实现和jquery实现和js面向对象方式实现
    js实现一个简单计算器
    纯css3图片旋转展示
    自定义按钮~自适应布局~常见bug
  • 原文地址:https://www.cnblogs.com/springsnow/p/13174511.html
Copyright © 2011-2022 走看看