擅长:python、mysql、java
<p><code>struct</code>是为处理C结构而设计的。这就是为什么它只有股票C类型。
“6字节整数”不是一个普通的C类型——你不能写一些像<code>struct s { int6 timestamp; }</code>这样的东西来马上得到一个可用的整数。这就是为什么它在这里也不起作用。在</p>
<p>那么,在C语言中,你将如何解决这个问题呢?你可能会的</p>
<ul>
<li>写入<code>unsigned char ts_data[6];</code></li>
<li>将值复制到其他位置</li>
<li>垫上它然后</li>
<li>将结果解释为整数</li>
</ul>
<p>现在,我们所要做的就是用Python表达相同的内容:</p>
<pre><code>>>> struct.pack('q',1324)
',\x05\x00\x00\x00\x00\x00\x00' #my arch is big-endian
>>> struct.unpack('q',',\x05\x00\x00\x00\x00')
error: unpack requires a string argument of length 8
>>> struct.unpack('6s',',\x05\x00\x00\x00\x00')
(',\x05\x00\x00\x00\x00',)
>>> s=_[0]
>>> struct.unpack('q',s+'\x00'*2) #check byte order to find out which side to pad from
(1324,)
</code></pre>