python: печать сообщения сетевой ссылки в шестнадцатеричном формате

#python #python-2.7 #sockets #netlink

Вопрос:

 import os import socket import struct  ...  s = socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, socket.NETLINK_ROUTE) s.bind((os.getpid(), RTMGRP_IPV4_IFADDR))  while True:  data = s.recv(65535)  msg_len, msg_type, flags, seq, pid = struct.unpack("=LHHLL", data[:16])   ...   # dump data in hex  

Я хотел бы напечатать первые 64 байта данных, print data возвращает мусор, я думаю, это потому, что данные нужно распаковать?

Я тоже пытался ' '.join(str(x) for x in s[:len(s)]) , но это тоже не помогает. Каков был бы правильный способ сброса данных, считанных из netlink сокета?

Комментарии:

1. Самый простой способ-это сказать data[:64].encode('hex') . Это работает только для Python 2.

2. @js-on data уже является bytes строкой, поэтому ее не нужно кодировать. Просто сделай data[:64].hex()

3. @TimRoberts, спасибо за помощь.