2017-12-08 33 views
0

Hex値がASCIIに変換され、Python tk libraryを介して表示されます.Tkinter LabelFrameを使用して表示されます。Python Tkinterラベルに正しいASCII値が表示されない

from Tkinter import * 

root = Tk() 

labelframe = LabelFrame(root, text="") 
labelframe.pack(fill="both", expand="yes") 

response = '62 F1 11 62 00 00 32 2D 31 34 45 30 39 39 2D 4D 41 30 31' 
BResponse = response.replace(' ', '') 
BResponse = BResponse.decode('hex') 
BResponse = BResponse[3:] 

left = Label(labelframe, text="ASCII Conversion::" +' '+ BResponse) 
left.pack() 

root.mainloop() 

取得値:最初の文字のみ。 b

私は、ASCII変換b 2-14E099-MA01

は、ASCII値をサポートTkinterのです期待してい?

+0

値を印刷するだけで、値が期待どおりに印刷されますか?そうでなければ、これはTkinterとは関係ありません。 –

+0

はい。 –

+0

文字列の 'repr'を出力すると' 'b \ x00 \ x002-14E099-MA01 ''という文字列が得られます。 4と5。 –

答えて

1

問題はTkinterにはまったく関連していないようです。私は、文字列のreprを印刷するとき、私はあなたがそれらをスペースとしてレンダリングする場合は4位と5で正しい与えられた2つの00バイトと思われ、'b\x00\x002-14E099-MA01'を取得し、それに応じてそれらを交換できます。

>>> BResponse[3:].replace("\x00", " ") 
'b 2-14E099-MA01' 

更新:ある種の誤解があるようです:00ではなく、のスペースですが、NULLバイトです。スペースは32、つまり20(16進数)です(とは混同しないでください。50、つまり2)。

>>> ord(" ") 
32 
>>> int("32", 16) 
50 
>>> chr(50) 
'2' 
関連する問題