擅长:python、mysql、java
<p>如果您的<code>fld_desc</code>确实是字节字符串<code>'2\x002\x005\x000\x00P\x00i\x00n\x00O\x00V\x00E\x00m\x00p\x00t\x00y\x00'</code>,而这是python2,那么您只需要这样做</p>
<pre><code>>>> fld_desc.decode('UTF-16-LE')
u'2250PinOVEmpty'
</code></pre>
<hr/>
<p>你错的地方是你根本不需要在这里使用<code>struct.unpack</code>。如果您这样做,那么您必须注意<code>struct.unpack</code>返回一个字符元组:</p>
^{pr2}$
<p>它被馈送到<code>bytes</code>(在python2中它毕竟是<code>str</code>的同义词),使其成为一个新的字符串</p>
<pre><code>"('2', '\\x00', '2', '\\x00', '5', '\\x00', '0', '\\x00', 'P', '\\x00', 'i', '\\x00', 'n', '\\x00', 'O', '\\x00', 'V', '\\x00', 'E', '\\x00', 'm', '\\x00', 'p', '\\x00', 't', '\\x00', 'y', '\\x00')"
</code></pre>
<p>解码出来的看起来像是中日韩字符和象形图的字符串</p>
<blockquote>
<p>"✨✲尧へ✰㈧Ⱗ✠硜〰Ⱗ✠✵尧へ✰〧Ⱗ✠硜〰Ⱗ✠❐尧へ✰椧Ⱗ✠硜〰Ⱗ✠❮尧へ✰伧Ⱗ✠硜〰Ⱗ✠❖尧へ✰䔧Ⱗ✠硜〰Ⱗ✠❭尧へ✰瀧Ⱗ✠硜〰Ⱗ✠❴尧へ✰礧Ⱗ✠硜〰⤧" </p>
</blockquote>
<p>在little endian(UTF-16-LE)中,以及</p>
<blockquote>
<p>"⠧㈧Ⱐ❜砰〧Ⱐ✲✬‧屸〰✬‧㔧Ⱐ❜砰〧Ⱐ✰✬‧屸〰✬‧倧Ⱐ❜砰〧Ⱐ❩✬‧屸〰✬‧渧Ⱐ❜砰〧Ⱐ❏✬‧屸〰✬‧嘧Ⱐ❜砰〧Ⱐ❅✬‧屸〰✬‧洧Ⱐ❜砰〧Ⱐ❰✬‧屸〰✬‧琧Ⱐ❜砰〧Ⱐ❹✬‧屸〰✩" </p>
</blockquote>
<p>在big endian(UTF-16-BE)中。在</p>