Python'da bir dosyanın onaltılık verilerini bir listeye hex
diyelim mi? Python: Dosyadan hex'i listeye mi okuyorsunuz?
Yani hex
hex = ['AA','CD','FF','0F']
sonra, bir dizeye bölünmüş okumak zorunda. Bu büyük dosyalar için yoğun bellek.
Python'da bir dosyanın onaltılık verilerini bir listeye hex
diyelim mi? Python: Dosyadan hex'i listeye mi okuyorsunuz?
Yani hex
hex = ['AA','CD','FF','0F']
sonra, bir dizeye bölünmüş okumak zorunda. Bu büyük dosyalar için yoğun bellek.
s = "Hello"
hex_list = ["{:02x}".format(ord(c)) for c in s]
Çıktı
['48', '65', '6c', '6c', '6f']
Sadece open(filename).read()
için s
değiştirmek ve iyi olmalıdır.
with open('/path/to/some/file', 'r') as fp:
hex_list = ["{:02x}".format(ord(c)) for c in fp.read()]
Veya, büyük dosyalar için bellekte aynı anda tüm listeyi tutmak istemiyorsanız.
hex_list = ("{:02x}".format(ord(c)) for c in fp.read())
ve değerleri almak için,
list(hex_list)
Sadece emin olun - bu kazandı ' Büyük dosyalar ile yavaş mı? –
Eğer bu konuda endişe ediyorsanız 'hex_list' bir jeneratör yapabilir –
Üzgünüz, python için yeni ... lütfen açıkla @ cricket_007 –
dosyaların onaltılık döker görüntülemek için vardır unutmayın
next(hex_list)
jeneratörden kalan tüm değerleri almak için aramaya devam çoğu işletim sisteminde kullanılabilir programlar.
od
(bir -x
veya -t x
seçeneği vardır sekizlik dökümü,) pencerelerhexdump
xd
yarar: Yapmak istediğiniz tüm onaltılık dosyayı dökümü ise, bu programlardan birini düşünün denemedim saf Python;) –
Python 3'ü kullanarak, giriş dosyanızın gösterdiğiniz örnek baytları içerdiğini varsayalım. Örneğin, içeriğini yorumlamak hiçbir çaba göstermeden, biz girdi dosyasındaki her bayt onaltılık gösterimi, ikili modda dosyayı açmak güzel olurdu istiyorum verilmiş, Şimdi bu
>>> inp = bytes((170,12*16+13,255,15)) # i.e. b'\xaa\xcd\xff\x0f'
>>> with open(filename,'wb') as f:
... f.write(inp)
gibi oluşturabilir karakter/dizeleri
>>> with open(filename,'rb') as f:
... buff = f.read() # it reads the whole file into memory
...
>>> buff
b'\xaa\xcd\xff\x0f'
>>> out_hex = ['{:02X}'.format(b) for b in buff]
>>> out_hex
['AA', 'CD', 'FF', '0F']
dosya büyükse (veya yanlışlıkla UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 0: invalid start byte
üzerine basılmayacak) gibi, bir defada veya parçalar halinde bir karakter okumak isteyebilirsiniz. Bu amaçla, this Q&A
'u okumanızı tavsiye ederiz. – jsfan
Üzgünüz, düzeltmek için –
[http://stackoverflow.com/questions/3964245/convert-file-to-hex-string-python](http://stackoverflow.com/questions/3964245/convert-file-to- hex-string-python) Bu kesin bir cevap değil, muhtemelen sizi doğru yönde zorlayacaktır. –