有没有办法将对象转换为字节数组?

时间:2020-12-18 20:08:19

标签: python python-3.8

我有一个 Packet 类,有没有办法将它的对象转换为字节数组?

from abc import abstractmethod

class Packet:
    @abstractmethod
    def __init__(self, name, data):
        self.name = name
        self.data = data
packet = Packet("packet-01", None)

1 个答案:

答案 0 :(得分:0)

您可以使用 pickle 包将对象转换为。 bytearray


In [97]: from abc import abstractmethod 
    ...:  
    ...: class Packet: 
    ...:     @abstractmethod 
    ...:     def __init__(self, name, data): 
    ...:         self.name = name 
    ...:         self.data = data 
    ...:                                                                        

In [98]: packet = Packet('packet-01',None)                                      

In [99]: packet                                                                 
Out[99]: <__main__.Packet at 0x7f9d540cf040>

In [100]: import pickle                                                         

In [101]: byte = pickle.dumps(packet)                                           

In [102]: byte                                                                  
Out[102]: b'\x80\x04\x95:\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x06Packet\x94\x93\x94)\x81\x94}\x94(\x8c\x04name\x94\x8c\tpacket-01\x94\x8c\x04data\x94Nub.'

您可以阅读关于泡菜 here 的文章。