2013-05-31 46 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 
相关问题