使用十六进制元素打印列表

时间:2013-09-13 10:21:48

标签: python

我有这个清单:

a_list = [0x00, 0x00, 0x00, 0x00]

当我打印它时,我得到:

print a_list
[0, 0, 0, 0]

但我想:[0x0, 0x0, 0x0, 0x0][0x00, 0x00, 0x00, 0x00],现在无所谓。

我试图创建一个函数,例如:

def hex_print(the_list):
     string = '['
     for element in the_list:
         if(the_list.index(element) < len(the_list)):
             print(str(the_list.index(element)))
             string = string + hex(element) + ', '
         else:
             print(str(the_list.index(element)))
             string = string + hex(element) + ']'
     print string

但每次打印的信息都是:

[0x0, 0x0, 0x0, 0x0,

我认为the_list.index(element)总是返回the_list中第一次出现的元素,而不是元素的实际位置。有没有办法让我得到元素的实际位置?

5 个答案:

答案 0 :(得分:8)

>>> a_list = range(4)
>>> print '[{}]'.format(', '.join(hex(x) for x in a_list))
[0x0, 0x1, 0x2, 0x3]

这样做的好处是不会在所有元素周围加上引号,因此它会为数字列表生成有效的文字。

答案 1 :(得分:4)

print [hex(no) for no in a_list]

hex函数将数字转换为十六进制表示。

答案 2 :(得分:3)

尝试以下方法:

print [hex(x) for x in a_list]

输出应类似于:http://codepad.org/56Vtgofl

答案 3 :(得分:1)

对于python3,请使用以下代码:

print([hex(x) for x in a_list])

答案 4 :(得分:0)

如果要零填充:

", ".join("0x{:04x}".format(num) for num in a_list)

“ 0x {:04x}”将数字“ 0x”放在数字前面。 “ {:04x}”部分将零填充到4个位置,以十六进制打印数字。