0

次のスニペットが機能しない理由を誰かに説明してもらえますか? 結果の 16 進文字列の長さはわずか 2 文字です。

#!/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

c = s[i:1]c = s[i:i+1]または_c[i]

Python では、文字列 itellf をループできるため、例をスライスする必要はありません。

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 に答える
2

i各ループで、 (増加している) から位置にスライスしようとしているためです。1つまり、i> 1 の後、空の文字列が得られます...

ただし、あなたがやっているようです:

from binascii import hexlify

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

...難しい方法...

于 2013-05-25T12:09:47.717 に答える