2012-11-15 82 views
1

我想從一個bin文件打開bin文件和ASCII轉換爲十六進制

import io 
data=io.open('bpsk_2m_b11.rd16','rb').read() 
print (data) 

打開一些數據,但似乎有一些ASCII符號,如(我的意思是 '{' 和 'K', 'W')

B '\ XDE {\ X1D \ 86 \ XA0 \ x81kw \命苦\ x8a'

我很好與整個格式化的東西但我怎樣才能用十六進制替換那些ASCII碼符號?或者我應該使用其他模式來閱讀這個文件?

回答

1

一切工作正常,b'{'是寫b'\x7b'的只是另一種方式:

>>> b'{' == b'\x7b' 
True 

您可以創建一個字符串的只有下列輔助方法逃脫:

import binascii 
def to_byte_escapes(b): 
    return ''.join('\\x' + binascii.hexlify(byte) for byte in b) 

然後你」我會得到:

>>> print(to_byte_escapes(b'\xde{\x1d\x86\xa0\x81kw\xbc\x8a')) 
\xde\x7b\x1d\x86\xa0\x81\x6b\x77\xbc\x8a 
+0

是的,我意識到,但它更像一個形式ating問題 - 如何使它看起來像\ x7b not {。 編輯:: 該文件是非常長的,我需要它的所有數據在十六進制,重點是如何將這些特定的ASCII標誌更改爲十六進制/打開此文件的方式它只顯示十六進制 – FRC

+0

@ user1827025更新與一個使用['binascii.hexlify'](http://docs.python.org/3/library/binascii.html#binascii.hexlify)的解決方案。請注意,「Python字節轉義」是一個非常奇怪的數據交換格式。 – phihag

+0

非常感謝 - 在python 3.x中實現了一些問題(因爲我剛剛得到了2.x),但現在它確定。 – FRC