将整数格式化为十六进制字符串

85
我需要从一个随机整数列表(0-255)创建一个十六进制数字字符串。每个十六进制数字应该由两个字符表示:5 -“05”,16 -“10”等。

例子:

Input: [0,1,2,3,127,200,255], 
Output: 000102037fc8ff
我已经想出了:
#!/usr/bin/env python

def format_me(nums):
    result = ""
    for i in nums:
        if i <= 9:
            result += "0%x" % i
        else:
            result += "%x" % i
    return result

print format_me([0,1,2,3,127,200,255])

不过,这看起来有点笨拙。有更简单的方法吗?


相关链接:打印包含十六进制元素的列表 - Gabriel Staples
12个回答

0
可以使用Python的字符串格式化函数format()来实现这个功能。 代码:
n = [0,1,2,3,127,200,255]
s = "".join([format(i,"02X") for i in n])
print(s)

输出:

000102037FC8FF

0

带有一些美化的示例,类似于Python 3.8中可用的sep选项

def prettyhex(nums, sep=''):
    return sep.join(f'{a:02x}' for a in nums)

numbers = [0, 1, 2, 3, 127, 200, 255]
print(prettyhex(numbers,'-'))

输出

00-01-02-03-7f-c8-ff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接