美文网首页
Python 数据结构 字节

Python 数据结构 字节

作者: __RY__ | 来源:发表于2018-08-17 11:19 被阅读14次

    bytes

    • 不可变字节序列

    bytearray

    • 字节数组

    • 可变

    字符串与bytes

    • 字符串是字符组成的有序序列,字符可以使用编码来理解
    • bytes是字节组成的有序的不可变序列
    • bytearray是字节组成的有序的可变序列

    编码与解码

    • 字符串按照不同的字符集编码encode 返回字节序列bytes

      • encode(encoding='utf-8',errors='strict') -> bytes
    • 字节序列按照不同的字符集解码decode返回字符串

      • bytes.decode(encoding='utf-8',errors='strict') -> str
      • bytearray.decode(encoding='utf-8',errors='strict') -> str

    bytes定义

    • 十六进制的字符串表示方法是“\x”,十六进制数的时候用“0x”表示

    • bytes() -> 空bytes

    • bytes(int) -> 指定字节的bytes,被0填充

    • bytes(iterable_of_ints) -> bytes[0,255]的int组成的可迭代对象

      • >>> bytes(range(0,5))
      • ​ b'\x00\x01\x02\x03\x04'
    • bytes(string,encoding[,errors]) -> bytes等价于string.encode()

    • bytes(bytes_or_buffer) -> immutable copy of bytes_of_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象

    • 使用b前缀定义

      • 只允许基本ASCII使用字符形式b'abc9'

      • 使用16进制表示b'\x41\x61'

        • >>> b'\x41\x61'.decode()
        • ​ 'Aa'

    bytes操作

    • 和str类型类似,都是不可变类型,所以很多都是一样。只不过bytes的方法,输入的是bytes,输出是bytes

    bytes

    • b'abcdef'.replace(b'f',b'k')

    • b'abc'.find(b'b')

    • 类方法bytes.formhex(string)

      • string必须是2个字符的16 进制的形式,'6162 6a 6b',空格将被忽略
      • bytes.fromhex('6162 09 6a 6b00')
    • hex()

      • 返回16进制表示的字符串

      • 'abc'.encode().hex()

    • 索引

      • b'abcdef'[2] 返回该字节对应的数,int类型

    bytearray 定义

    • bytearray() ->空bytearray
    • bytearray(int) -> 指定字节的bytearray, 被0填充
    • bytearray(iterable_of_ints) ->bytearray[0,255]的int组成的可迭代对象
    • bytearray(string,encoding[,errors]) -> bytearray近似string.encode(),不过返回可变对象
    • bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变bytearray对象
    • 注意,b前缀定义的类型是bytes类型

    bytearray操作

    • append(int) 尾部追加一个元素

    • insert(index,int) 在指定索引位置插入元素

    • extend(iterable_of_ints) 将一个可迭代的整数集合追加到当前bytearray

    • pop(index=-1)从指定索引上移除元素,默认从尾部移除

    • remove(value)找到第一个value移除,找不到抛ValueError异常

    • 注意:上述方法若需要使用int类型,值在[0,255]

    • clear()清空bytearray

    • reverse()翻转bytearray,就地修改

    int 和 bytes

    • int.from_bytes(bytes,byteorder)

      • 将一个字节数组表示成整数
    • int.to_bytes(leng,byteorder)

      • byteorder 字节序
      • 将一个整数表达成一个指定长度的字节数组
    >>> i = int.from_bytes(b'abc','big')
    >>> i
    6382179
    >>>
    >>> print(i,hex(i))
    6382179 0x616263
    >>> print(i.to_bytes(3,'big'))
    b'abc'
    
    

    ASCII

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套计算机编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。

    ASCII-Table-wide

    相关文章

      网友评论

          本文标题:Python 数据结构 字节

          本文链接:https://www.haomeiwen.com/subject/lmezbftx.html