首页 > 其他分享 >tcp和udp:发送和接收工具

tcp和udp:发送和接收工具

时间:2022-11-18 10:00:38浏览次数:36  
标签:udp return 进制 16 hex tcp 发送 str 字符串

字符串转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

相关文章