2014-02-14 60 views
0

我想解壓縮一些原始數據。 (它超過3個字節,但我已經減少到這個了。)python結構解壓縮H或H對齊

我不希望在以下代碼中回溯。我是不是該?由於對齊問題嗎?正如你可以看到第二個成功。 (我的數據沒有對齊,我可以編碼,但是我需要嗎?)

我期待(1,770)或(1,515)我想,不是例外。

http://docs.python.org/2/library/struct.html (B = UCHAR,1,8-和H =短,2,16)

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 
32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from struct import * 
>>> unpack('BH', '\x01\x02\x03') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    struct.error: unpack requires a string argument of length 4 
>>> unpack('HB', '\x01\x02\x03') 
(513, 3) 
>>> 
+0

嗨,什麼是你真正想要解開? 123? – theAlse

+0

它的原始二進制數據如0x010203 ...(3個字節)來自一臺機器,01是field1的值,0203是field2的值等等( Ignacio現在已經修復了它,它的工作非常好,謝謝。 ) – joec

回答

1

注:

  1. ...
  2. 沒有填充被添加當使用非原生大小和對齊時,例如'<','>','='和'!'。

source

>>> struct.unpack('<BH', '\x01\x02\x03') 
(1, 770) 
>>> struct.unpack('>BH', '\x01\x02\x03') 
(1, 515) 
+0

優秀!謝謝。正是我想要的。 – joec