我们可以简单地使用:
crc = struct.unpack('>i', data)
为什么人们喜欢这样:
(crc,) = struct.unpack('>i', data)
逗号是什么意思?
第一个变体返回一个单元素元组:
In [13]: crc = struct.unpack('>i', '0000')
In [14]: crc
Out[14]: (808464432,)
要获得该值,您必须编写crc[0].
第二个变体解包元组,使您能够编写crc而不是crc[0]:
In [15]: (crc,) = struct.unpack('>i', '0000')
In [16]: crc
Out[16]: 808464432
该unpack方法返回一个值元组。使用您描述的语法,可以直接将元组的第一个值加载到变量crc中,而第一个示例引用整个元组,您必须crc[1]稍后在脚本中编写来访问第一个值。
因此,基本上如果您只想使用其中一个返回值,您可以使用此方法将其直接加载到一个变量中。
逗号表示crc是元组的一部分。(有趣的是,在 Python 中指示元组的是逗号,而不是括号。)(crc,)是具有一个元素的元组。
crc = struct.unpack('>i', data)
做crc一个元组。
(crc,) = struct.unpack('>i', data)
分配crc给元组中第一个(也是唯一一个)元素的值。
(crc,)被认为是单元组。