Python中十六进制字符串的字符串连接

时间:2013-05-25 12:08:02

标签: python

任何人都可以向我解释为什么以下代码段不起作用?生成的十六进制字符串只有两个字符长。

#!/usr/bin/python

s = 'Hello, World!'

hs = ''
for i in range(len(s)):
    c = s[i:1]
    hs += c.encode('hex')
print hs

2 个答案:

答案 0 :(得分:2)

因为在每个循环中,您尝试从i(正在增加)切换到位置1 - 这意味着在i>之后1,你得到空字符串...

看起来,你正在做的事情:

from binascii import hexlify

s = 'Hello, World!'
print hexlify(s)

......艰难的方式......

答案 1 :(得分:2)

c = s[i:1]应为c = s[i:i+1]c[i]

在python中,你可以遍历字符串itsellf,所以不需要在你的例子中切片:

hs = ''
for c in s:
    hs += c.encode('hex')

或使用str.join的单行,比连接快:

hs = "".join([c.encode('hex') for c in s])