2013-05-31 47 views
-3

簡單的問題我失敗了。有一個字符串,我需要找到它的長度的十六進制編碼值。下面是正確的(和工作):python字符串到十六進制代表長度值

sample="MyTest1234" 
print repr(chr(len(sample))) 

輸出是: '\n'

但是,當然,只要我的 「樣品」 是> 255:

sample="MyTest1234"*26 
print repr(chr(len(sample))) 

失敗與: ValueError: chr() arg not in range(256)

如果我想計算字符串的長度是b igger比256?

+1

爲什麼你使用'chr'呢? – kirelagin

回答

4

有一個內置的功能,將數字轉換爲十六進制,這就是所謂的hex()。這是你的兩個字符串作爲例子:

>>> sample="MyTest1234" 
>>> print hex(len(sample)) 
0xa 
>>> sample="MyTest1234"*26 
>>> print hex(len(sample)) 
0x104 

如果你不想0x前綴,你需要劃好:

>>> print hex(len(sample))[2:] 
a 
+0

+1半打一個,或其他六個。我只是覺得OP可能不想要'0x'前綴 –

+0

採取,非常感謝 - 我會處理0x,沒關係,更多的是缺少「一般點」;) – user2440330

+0

'format()'是完全有效,它取決於你想要的輸出格式。 'hex()'產生有效的Python十六進制文本,'format()'給你在輸出(0-padding,大寫或小寫,可選標準前綴等)上的更多靈活性。 –

3

如何:

sample="MyTest1234" 
print format(len(sample), 'x') 
# a 

sample="MyTest1234"*26 
print format(len(sample), 'x') 
# 104 
相關問題