谁能向我解释为什么以下代码段不起作用?生成的十六进制字符串只有两个字符长。
#!/usr/bin/python
s = 'Hello, World!'
hs = ''
for i in range(len(s)):
c = s[i:1]
hs += c.encode('hex')
print hs
谁能向我解释为什么以下代码段不起作用?生成的十六进制字符串只有两个字符长。
#!/usr/bin/python
s = 'Hello, World!'
hs = ''
for i in range(len(s)):
c = s[i:1]
hs += c.encode('hex')
print hs
因为在每个循环中,您都试图从i
(增加)切片到位置1
- 这意味着在i
> 1 之后,您会得到空字符串......
看起来,你正在做:
from binascii import hexlify
s = 'Hello, World!'
print hexlify(s)
……艰难的路……
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])