对于原始字符串中的每个字符,使用
ord
获取字符的数值,然后使用字符串格式操作将该数值表示为包含一对十六进制数字字符的字符串。将这两个数字字符串累加为一个字符串。
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''
for ch in mystring:
number = ord(ch)
hexdigits = '{:02x}'.format(number)
result += hexdigits
print result
通过使用列表理解将十六进制数字字符串对收集到一个列表中,然后使用
join
方法使用空分隔符字符串将十六进制数字字符串粘合到一个字符串中。
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''.join([ '{:02x}'.format(ord(ch)) for ch in mystring ])
print result
或者你可以用列表代替理解
map
用一个
lambda
建立十六进制数字对的列表。
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''.join(map(lambda ch: '{:02x}'.format(ord(ch)), mystring))
print result
地图
版本更难阅读,但可能会运行得稍快一些。