900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python: bytes bytearray 详解

Python: bytes bytearray 详解

时间:2022-03-26 07:06:20

相关推荐

Python: bytes bytearray 详解

文章目录

写在开头的话Python: bytes、bytearray00. 概述01.bytes定义02. bytes操作03. bytearray定义04. bytearray操作05. 进制转化5.1 转化为十进制5.2 转化为二进制5.3 转化为八进制5.4 转化为十六进制5.10 十进制转化为其他进制6. 类型转换写在最后的话:

这里是一段防爬虫文本,请读者忽略。首发于CSDN,作者IDYS博客首页:/weixin_41633902/本文链接:/weixin_41633902/article/details/107424044未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

写在开头的话

请记住:实践是掌握知识的最快方法如果你只是怀着看看的态度去快速浏览文章,而不去认认真真的把文章里面讲的任何一个知识点去实践一遍,那么你永远也掌握不了它生命不息,折腾不止!

Python: bytes、bytearray

00. 概述

Python3引入两个新类型bytes不可变字节序列bytearray字节数组可变

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

编码与解码 字符串按照不同的字符集编码encode返回字节序列bytesencode(encoding='utf-8', errors='strict') -> bytes字节序列按照不同的字符集解码decode返回字符串bytes.decode(encoding="utf-8", errors="strict") -> strbytearray.decode(encoding="utf-8", errors="strict") -> str

ascii码表

01.bytes定义

定义bytes()bytesbytes(int)指定字节的bytes,被0填充bytes(iterable_of_ints) -> bytes [0,255]int组成的可迭代对象bytes(string, encoding[, errors]) -> bytes等价于string.encode()bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer从一个字节序列或者buffer复制出 一个新的不可变的bytes对象使用b前缀定义 只允许基本ASCII使用字符形式b'abc9'使用16进制表示b"\x41\x61"

演示

print(bytes())print(bytes(1))print(bytes([97, 98, 65, 66, 67, 68]))print(bytes("pwd", "utf-8"))print("pwd".encode())print(b"pwd".decode())a = b'pwd'b = bytes(a)print(a is b)print(a == b)print(id(a))print(id(b))print(type(b"abc"))print(b"\x61\x62\x63")

运行结果

b''b'\x00'b'abABCD'b'pwd'b'pwd'pwdTrueTrue23252494078562325249407856<class 'bytes'>b'abc'

02. bytes操作

str类型类似,都是不可变类型,所以方法很多都一样。只不过bytes的方法,输入是bytes,输出是bytesb'abcdef'.replace(b'f',b'k')b'abc'.find(b'b')类方法bytes.fromhex(string)string必须是2个字符的16进制的形式,'6162 6a 6b',空格将被忽略bytes.fromhex('6162 09 6a 6b00')hex()返回16进制表示的字符串'abc'.encode().hex()索引b'abcdef'[2]返回该字节对应的数,int类型

演示

print(b"pwd who am i ".replace(b"i", b"who"))print(b"who am i i love you".split(b"i"))print(bytes.fromhex("61626309313233"))print("ABC".encode().hex())print(b"1234567ABCabc"[2])print(b"1234567ABCabc"[8])print(b"1234567ABCabc"[10])

运行结果

b'pwd who am who '[b'who am ', b' ', b' love you']b'abc\t123'414243516697

03. bytearray定义

定义bytearray()bytearraybytearray(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类型

演示

print(bytearray([97, 98, 99]))print(bytearray("12345", encoding="utf"))print(type(bytearray("12345", encoding="utf")))print(type("123456".encode()))print(type(bytearray(b"abcde")))

运行结果

bytearray(b'abc')bytearray(b'12345')<class 'bytearray'><class 'bytes'><class 'bytearray'>

04. bytearray操作

和bytes类型的方法相同

bytearray(b'abcdef').replace(b'f',b'k')bytearray(b'abc').find(b'b')

类方法

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

hex()

返回16进制表示的字符串bytearray('abc'.encode()).hex()

索引

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

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

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

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

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

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

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

clear()清空bytearray

reverse()翻转bytearray,就地修改

演示

b = bytearray("abcdef", encoding="utf-8")print(type(b))b.append(65)print(b)b.append(67)print(b)b.insert(2, 70)print(b)b.extend([97, 98, 99])print(b)b.pop()print(b)b.remove(97)print(b)for i in b:print("%s" % chr(i), end=" ")print()b.reverse()print(b)b.clear()print(b)

运行结果

<class 'bytearray'>bytearray(b'abcdefA')bytearray(b'abcdefAC')bytearray(b'abFcdefAC')bytearray(b'abFcdefACabc')bytearray(b'abFcdefACab')bytearray(b'bFcdefACab')b F c d e f A C a b bytearray(b'baCAfedcFb')bytearray(b'')

05. 进制转化

5.1 转化为十进制

二进制转化为十进制

print(int("1101", 2))print(type(int("1101", 2)))

运行结果

13<class 'int'>

八进制转化为十进制

print(int("31", 8))

运行结果

25

十六进制转化为十进制

print(int("21", 16))

运行结果

33

5.2 转化为二进制

十进制转化为二进制

print(bin(12))print(bin(16))

运行结果

0b11000b10000

八进制转化为二进制

print(bin(0o12))

运行结果

0b1010

十六进制转化为二进制

print(bin(0x23))

运行结果

0b100011

5.3 转化为八进制

二进制转化为八进制

print(oct(0b111001))

运行结果

0o71

十进制转化为八进制

print(oct(13))

运行结果

0o15

十六进制转化为八进制

print(oct(0x16))

运行结果

0o26

5.4 转化为十六进制

二进制转化为十六进制

print(hex(0b11))

运行结果

0x3

八进制转化为十六进制

print(hex(0o12))

运行结果

0xa

十进制转化为十六进制

print(hex(11))

运行结果

0xb

5.10 十进制转化为其他进制

演示

print(format(10, 'b')) # 十进制转二进制print(format(20, 'o')) # 十进制转八进制print(format(15,'x')) # 十进制转 十六进制

运行结果

101024f

6. 类型转换

chr()将整数转化为字符ord()将字符转化为整数值

演示

print(chr(97))print(ord('w'))

运行结果

a119

写在最后的话:

无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致欢迎关注我的CSDN博客,IDYS’BLOG持续更新内容:

linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。