2016-03-27 35 views
1

ile kodlar. Her karakteri, hex'e dönüştürdüğüm bir dize için 00 ile doldurmalıyım. Bunu python 2.5.2'de yapmanın bir yolu var mı?python, hex karakterini 00

örn.

hextext = "H:\myfilepath.myfileending" 
encodedhex = str(hextext.encode('hex')) 
print encodedhex 

Halen

483a5c6d7966696c65706174682e6d7966696c65656e64696e67 

yazdırır Ama Ayrıca, tüm karakterler büyük harf olmak için umuyordum

48003a005c00 etc. 

yazdırmalısınız - Bunu yapmanın bir yolu var mı?

Ayrıca, hex neden bazen bu şekilde 00s ile yastıklı olsun merak ediyorum?

cevap

3

basit yolu

>>> hextext = "H:\myfilepath.myfileending" 
>>> encodedhex = "".join(c.encode("hex")+"00" for c in hextext) 
>>> encodedhex 
'48003a005c006d007900660069006c00650070006100740068002e006d007900660069006c00650065006e00640069006e006700' 
>>> encodedhex.upper() 
'48003A005C006D007900660069006C00650070006100740068002E006D007900660069006C00650065006E00640069006E006700' 

olurdu Ama bu çıktıyı ve bir UTF-16 kodlu bir dize istediğinden emin misin?

>>> hextext.encode("utf-16-le") 
'H\x00:\x00\\\x00m\x00y\x00f\x00i\x00l\x00e\x00p\x00a\x00t\x00h\x00.\x00m\x00y\x00f\x00i\x00l\x00e\x00e\x00n\x00d\x00i\x00n\x00g\x00'