微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python:bytes和bytearray

基础

  • bytes和bytearray为python3引入的两个新类型
  • 所有的数据其实都可以转换为字节的数组

字符串和bytes的区别

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

编码与解码

  • 字符串按照不容的字符集编码encode返回字节序列:bytes
  • str.encode(encoding="utf-8",errors="strict")
  • 字节序列按照不同的字符集,解码decode返回字符串
  • bytes.decode(encoding="utf-8",errors="strict")
  • bytearray.decode(encoding="utf-8",errors="strict")

一、bytes

bytes是不可变的字节序列

定义

  • bytes() 表示空bytes
  • bytes(int) 指定字节的bytes,被0填充
  • bytes(iterable_of_list) [0,255]的int组成的可迭代对象 “iterable_of_list” 表示可迭代的对象
  • bytes(string,encoding,errors),等价于string.encode()
  • bytes(bytes_or_buffer) 从一个字节序列或者buffer复制楚一个新的不可变的bytes对象

使用b前缀的定义

  • 只允许基本ASCII使用字符形式 b‘abc9’
  • 使用16进制表示 b’\x41\x61’

bytes的操作

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

replace find

  • 例如replace 替换,使用方式和字符串相同
  • 例如find ,查找元素,使用方式和字符串相同
print(b'abcdef'.replace(b'f',b'k'))
print(b'abcdef'.find(b'f'))

===============执行结果===========
b'abcdek'
5

hex

  • 返回16禁止表示的字符串
n= "abc".encode().hex()
print(n)
===============执行结果===========

616263

split

m=b'abcdef'.split(b'c')
print(m)

===============执行结果===========
[b'ab', b'def']

索引

和字符串取值i相似,bytes的取值也是使用下标索引,只传索引的时候,返回的数值是int型

m=b'abcdef'[2]
print(m)

===============执行结果===========
99

二、bytearray

bytearray为可变的字节数组

定义

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

bytearray的操作

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

replace find

  • 例如replace 替换,使用方式和字符串相同
  • 例如find ,查找元素,使用方式和字符串相同
print(bytearray(b'abcdef').replace(b'f',b'k'))
print(bytearray(b'abcdef').find(b'f'))

===============执行结果===========
bytearray(b'abcdek')
5

hex

  • 返回16禁止表示的字符串
n= bytearray("abc".encode()).hex()
print(n)
===============执行结果===========

616263

split


m=bytearray(b'abcdef').split(b'c')
print(m)

===============执行结果===========
[bytearray(b'ab'), bytearray(b'def')]

索引

和字符串取值i相似,bytes的取值也是使用下标索引,只传索引的时候,返回的数值是int型

m=bytearray(b'abcdef')[2]
print(m)

===============执行结果===========
99

修改 append instert extend pop remove clear reverse

  • append(int) 尾部追加元素
  • instert(index,int) 指定索引的位置插入元素
  • extend(iterable_of_list) 将一个可迭代的整数集合追加到当前bytearray
  • pop(index=1) 从指定的位置上移除元素,删除最后一个
  • remove(value) 找到第一个value后删除,找不到就抛出异常
  • 注意:以上方法若需要使用int类型,数值要在0(含)-255(含)之间
  • clear()清空 bytearray
  • reberse()反转倒叙bytearray
b = bytearray()
b.append(97)
print("appennd:",b)
b.append(99)
print("appennd:",b)
b.insert(1,98)
print("insert:",b)
b.extend([65,66,67])
print("extend:",b)
b.remove(66)
print("remove:",b)
b.pop()
print("pop:",b)
b.reverse()
print("reverse:",b)
b.clear()
print("clear:",b)

================执行结果===================
appennd: bytearray(b'a')
appennd: bytearray(b'ac')
insert: bytearray(b'abc')
extend: bytearray(b'abcABC')
remove: bytearray(b'abcAC')
pop: bytearray(b'abcA')
reverse: bytearray(b'Acba')
clear: bytearray(b'')

原文地址:https://www.jb51.cc/wenti/3281693.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐