python-记一次python转换str,int,bytes,hex

  • 1104 字
  1. 1. python 语言下,str转hex,转bytes

python 语言下,str转hex,转bytes

场景:

socket通信,python做服务端或客户端,读取文件内容并发送,需要转换为二进制或者hex方式发送,就需要用到str转hex和bytes。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 从yml文件读取数据并转为字典,其中需要的数据以字符串的形式读取到内存。
# 该字符串可以以ascii(str)直接解读,可以以hex字符读取,
# 假设yml文件以读取到config变量内
config: dict = {
'argument': "abcede"
}
data = config.get('argument', '').encode() # 若确定yml内为字符串,字典返回的即为字符串
# 在经过encode()后,变为bytes对象
# 输出为 data = b'abcede' , b开头即为bytes类型,显示为字符意为二进制数据可以被显示为字符
data1 = bytes.fromhex(data.decode()) # 将字符串解释为hex,需要调用此函数,传参为str类型,上述data在字典返回后为str,但又经encode又变为了bytes,因此需要decode回str
# 此时data1 = b'\xab\xcd\xef',已经变为了hex。
# 以上为str(hex字符串) -> hex(bytes)

# 添加类型判断
if (type(self.heartbeat_packet) is str):
data1 = data.encode()


# str(纯str) -> hex(str) 转为str字符对应的hex值
data2 = data.hex() # 将data = b'abcede' 转换为各字符对应的hex
# 此时 data2 = '616263646566(示例)' , 是纯字符串

# bytes -> hex
data.hex()

# bytes -> str
data.decode()

# str -> hex 需要str两两对齐
bytes.fromhex(data.decode())

# str -> bytes
data.encode()

# hex -> str

# hex -> bytes

打赏
打赏提示信息
分享
分享提示信息