我想“解包”或反序列化从 python 的 struct.pack() 函数输出的格式化数据。数据通过网络发送到另一个仅使用 Java 的平台。
通过网络发送数据的 Python 函数使用这个格式化程序:
def formatOutputMsg_Array(self, mac, arr):
mac_bin = mac.encode("ascii");
mac_len = len(mac_bin);
arr_bin = array.array('d', arr).tobytes();
arr_len = len(arr_bin);
m = struct.pack('qqd%ss%ss' % (mac_len, arr_len), mac_len, arr_len, time.time(), mac_bin, arr_bin);
return m
以下是 python 结构的文档(请参阅第 7.3.2.2 节。格式化字符): https ://docs.python.org/2/library/struct.html
1) 问题是 'qqd%ss%ss' 是什么意思???
是否意味着 -> long,long,double,char,char,[],char[],char,char[],char[]
2)为什么这里使用模数 "%"和元组 'qqd%ss%ss' % (mac_len, arr_len)?