如果您fld_desc
確實是簡單的字節串'2\x002\x005\x000\x00P\x00i\x00n\x00O\x00V\x00E\x00m\x00p\x00t\x00y\x00'
,這是蟒蛇2,您需要做的僅僅
>>> fld_desc.decode('UTF-16-LE')
u'2250PinOVEmpty'
你出錯的地方在於你需要而不是在這裏使用struct.unpack
。如果你這樣做,那麼你必須要注意的是struct.unpack
返回字符的元組:
>>> struct.unpack(fld_desc)
('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')
其送入bytes
(這畢竟是同義詞str
在Python 2),使得它成爲一個新的字符串
"('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')"
哪個解碼看起來像大多的CJK字符字符串,象形
「✨✲堯へ✰㈧Ⱗ✠硜〰Ⱗ✠✵堯へ✰〧Ⱗ硜〰Ⱗ✠❐堯へ✰椧Ⱗ✠硜〰Ⱗ✠❮堯へ✰傖Ⱗ✠硜〰Ⱗ✠❖堯へ✰䔧Ⱗ✠硜〰Ⱗ✠❭堯へ✰瀧Ⱗ✠硜〰Ⱗ✠❴堯へ✰礧Ⱗ✠硜〰⤧ 「
在小端排序(UTF-16-LE)
,和
」 ⠧㈧Ⱐ❜砰〧Ⱐ✲✬‧屸〰✬‧㔧Ⱐ❜砰〧Ⱐ✰✬‧屸〰✬‧倧Ⱐ❜砰〧Ⱐ❩✬‧屸〰✬‧渧Ⱐ❜砰〧Ⱐ❏✬‧屸〰✬‧嘧Ⱐ❜砰〧Ⱐ❅✬‧屸〰✬‧洧Ⱐ❜砰〧Ⱐ❰✬‧屸屸琧Ⱐ❜〧Ⱐ❹✬‧屸屸〰✩「
大端(UTF-16-BE)中的210
。
使用Google翻譯翻譯那個奇怪的符號,看看你得到了什麼...... :) – 2015-02-08 08:43:55