5

我有这个清单:

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 中的第一次出现,而不是元素的实际位置。有没有办法获得元素的实际位置?

4

5 回答 5

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

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

于 2013-09-13T10:34:51.773 回答
7

尝试以下操作:

print [hex(x) for x in a_list]

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

于 2013-09-13T10:26:53.340 回答
5
print [hex(no) for no in a_list]

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

于 2013-09-13T10:23:54.420 回答
5

对于 python3,使用以下代码:

print([hex(x) for x in a_list])
于 2018-01-09T06:59:24.383 回答
1

如果你想要零填充:

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

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

于 2019-04-16T20:57:05.327 回答