<p>您可以使用<code>struct</code>包来实现:</p>
<pre><code>from struct import unpack
tuple_of_shorts = unpack('h'*(len(barray)//2),barray)
</code></pre>
<p>这将产生<em>符号</em>短路。对于未签名的,请使用<code>'H'</code>:</p>
<pre><code>tuple_of_shorts = unpack('H'*(len(barray)//2),barray)
</code></pre>
<p>这在<em>小端</em>机器上为您的样本输入生成:</p>
<pre><code>>>> struct.unpack('h'*(len(barray)//2),barray)
(-512, 75)
>>> struct.unpack('H'*(len(barray)//2),barray)
(65024, 75)
</code></pre>
<p>如果您想使用<em>big endian</em>或little endian,可以在规范中添加<code>></code>(big endian)或<code><</code>(little endian)。例如:</p>
<pre><code># Big endian
tuple_of_shorts = unpack('>'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('>'+'h'*(len(barray)//2),barray) # signed
# Little endian
tuple_of_shorts = unpack('<'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('<'+'h'*(len(barray)//2),barray) # signed
</code></pre>
<p>正在生成:</p>
<pre><code>>>> unpack('>'+'H'*(len(barray)//2),barray) # big endian, unsigned
(254, 19200)
>>> unpack('>'+'h'*(len(barray)//2),barray) # big endian, signed
(254, 19200)
>>> unpack('<'+'H'*(len(barray)//2),barray) # little endian, unsigned
(65024, 75)
>>> unpack('<'+'h'*(len(barray)//2),barray) # little endian, signed
(-512, 75)
</code></pre>