如何在Python中通过AF_UNIX套接字发送多组十六进制字符串列表
解决AF_UNIX套接字发送多十六进制字符串列表的问题
嘿,我来帮你搞定这个问题~你的代码里踩了一个小坑:binascii.unhexlify()函数不能直接接收列表作为参数,它只支持单个的字节串(或者字符串)输入。你直接把整个列表传进去,肯定会触发类型错误的。
下面分两种场景给你正确的实现方式:
场景1:逐个转换列表中的每个十六进制字符串
如果需要把列表里的每个十六进制串分别转成二进制数据,之后逐个通过套接字发送,你可以用列表推导式遍历处理:
from binascii import unhexlify # 原始的十六进制字节串列表 hex_message_list = [b'8501012a1b0ff5ff', b'8501012a1b000ff'] # 遍历列表,对每个元素单独执行十六进制转二进制 binary_messages = [unhexlify(hex_str) for hex_str in hex_message_list] # 查看转换结果 for i, binary_msg in enumerate(binary_messages): print(f"第{i+1}条二进制消息: {binary_msg}")
处理完之后,你就可以遍历binary_messages,把每个二进制数据通过AF_UNIX套接字发送出去。
场景2:先拼接所有十六进制字符串再转二进制
如果需要把所有十六进制内容合并成一个二进制数据发送,那可以先拼接列表里的所有字节串,再执行转换:
from binascii import unhexlify hex_message_list = [b'8501012a1b0ff5ff', b'8501012a1b000ff'] # 先拼接所有十六进制字节串为一个大的字节串 combined_hex = b''.join(hex_message_list) # 再将拼接后的十六进制串转成二进制 combined_binary = unhexlify(combined_hex) print(f"合并后的二进制数据: {combined_binary}")
这样得到的combined_binary就是一个完整的二进制字节串,直接发送给AF_UNIX套接字即可。
内容的提问来源于stack exchange,提问作者srilalitha
相关产品推荐
相关产品推荐

