2014-04-13 17 views
6

Muhtemelen basit olması gereken bir şeyi yanlış anladığımı düşünüyorum.Nasıl python yazdırmak için " xaa xbb xcc xdd" 0xddccbbaa olarak?

Bir python komut dosyasına aktarılan bağımsız değişkenleri kabul etmeye çalışıyorum. Beklediğim argüman türü, "\xaa\xbb\xcc\xdd" satırları boyunca bir yerlerde ve gerçekten nasıl geçtiğini yazdırmak yerine, onu (sanırım) ikili dosyaya dönüştürmeyi sürdürüyor.

Bunu yapmak için aradığım şeyi yapmak için bunu nasıl alabilirim? Sonunda bunu almayı ve 0xddccbbaa gibi bir şeye dönüştürmeyi çok isterdim, ama en azından bunu yorumlayabilmenin ilk adımını atmayı çok isterim.

\x75 numaralı yazıcının u numarasını yazdırmak istemiyorum. \x75'u \x75 olarak yorumlayabilmek istiyorum. Bunu yapmanın kolay bir yolu var mı? struct ile

cevap

8

Bazı gösteriler: Esasen

x = b"\xaa\xbb\xcc\xdd" 

import struct 

struct.unpack('I',x) 
Out[3]: (3721182122,) 

y = struct.unpack('I',x) 

y[0] 
Out[5]: 3721182122 

hex(y[0]) 
Out[6]: '0xddccbbaa' 

: küçük-endian 4 bayt işaretsiz bir tamsayı ('I') halinde bytestring tedavi. struct kolları bir int dönüştürerek ve onaltılık bunun bir dize temsilini almak (veya dilerseniz '{:x}'.format(y[0]) gibi bir şey kullanın)

+0

TEŞEKKÜRLER için hex kullanabilirsiniz! Bu aradığım şeyi çözdü. Bunu anlayamadığımma inanamıyorum. Çok teşekkürler dostum! – user3528254