python笔记

发布时间 2023-06-06 21:05:24作者: 悠闲的小莫

python官方文档

bytes打印成hex

在一些时候,我们会读取一些bytes类型的数据,我们可能想输出的他的16进制,当用print(bytes)的时候,就会直接打印出对应的字符,这不符合要求。看下官方怎么说:

即,对于bytes类型,官方已经给出了相应的操作函数,不需要再写什么循环了。

可以使用print(value.hex())来输出value的16进制数

bytes与bytearray

bytes

>>> type(b'xxxxx')
<class 'bytes'>

>>> type('xxxxx')
<class 'str'>

bytes是byte的序列,而str是unicode的序列。

 

1、str 转换成 bytes 用 encode() 方法:(注意:这有个坑,str1.encode不加括号和加括号是不一样的,自己试试,初学貌似2.0不影响,3.0变了,不加括号开发环境语法不报错)

str = '人生苦短,我用Python!'
bytes = str.encode()
print(bytes)

输出:

b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'

2、好了,反转换 decode() :

bytes = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
str = bytes.decode()
print(str)

输出:

人生苦短,我用Python!

bytearray

1、bytearray和bytes不一样的地方在于,bytearray是可变的。

str = '人生苦短,我用Python!'
bytes = bytearray(str.encode())
bytes = bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)

输出:

'人生苦短,我用Python!'

2、改变bytearray

bytes[:6] = bytearray('生命'.encode())
bytes = bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)

输出:

生命苦短,我用Python!