任何人都可以向我解释为什么以下代码段不起作用?生成的十六进制字符串只有两个字符长。
#!/usr/bin/python
s = 'Hello, World!'
hs = ''
for i in range(len(s)):
c = s[i:1]
hs += c.encode('hex')
print hs
答案 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])