字符串转16进制字符串
'''
主要使用到了binascii内置模块
'''
代码
'''
将字符串转为对应的16进制
:param s 需要转换的内容
:param byteslens 转换完后的长度
:return 返回转换完成后的16进制字符串
4d6963726f5f466163746f727900000000000000
'''
def str_to_hex(s: str, byteslens: int) -> str:
res = str(binascii.b2a_hex(s.encode('utf8')), encoding='utf8')
return res.ljust(byteslens * 2, '0')
# binascii.b2a_hex 返回的是二进制数据所以还需要转成字符串
将16进制字符串转换成2进制数据,用于网络发送
代码
'''
将16进制字符串打包成2进制发送,发送前的转换
:params con 16进制字符串
:return 返回bytes
'''
def string2bytes(con:str) -> bytes:
bytestring = b''
ret = re.findall(r".{2}", con)
for info in ret:
bytestring = bytestring + struct.pack('B', int('0x' + info, 16))
return bytestring
'''
第二种方法
将16进制字符串打包成2进制发送,发送前的转换
:params con 16进制字符串
:return 返回bytes
'''
def string2bytes_2(con:str) -> bytes:
return binascii.unhexlify(con)
将接收到的二进制数据转换成16进制字符串
代码
'''
接收tcp或udp二进制数据转换成16进制字符串
:param b tcp或udp接收的二进制数据
:return 返回16进制 字符串
'''
def bytes2tohex(b: bytes) -> str:
return binascii.b2a_hex(b).decode('unicode_escape')
将16进制字符串转换成原数据
代码
'''
将16进制数据转换成对应的字符串
:param s 需要转换的16进制字符串
:return 原数据
'''
def hex_to_str(s: str) -> str:
return str(binascii.a2b_hex(s), encoding='utf8')
标签:udp,return,进制,16,hex,tcp,发送,str,字符串
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/16902228.html