0

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

#!/usr/bin/python

s = 'Hello, World!'

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

2 回答 2

2

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

看起来,你正在做:

from binascii import hexlify

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

……艰难的路……

于 2013-05-25T12:09:47.717 回答
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])
于 2013-05-25T12:09:55.357 回答