【问题标题】:Printing a Python list with hex elements打印带有十六进制元素的 Python 列表
【发布时间】:2013-09-13 10:21:48
【问题描述】:

我有这个清单:

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

【问题讨论】:

    标签: python


    【解决方案1】:
    >>> a_list = range(4)
    >>> print '[{}]'.format(', '.join(hex(x) for x in a_list))
    [0x0, 0x1, 0x2, 0x3]
    

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

    【讨论】:

      【解决方案2】:

      尝试以下方法:

      print [hex(x) for x in a_list]
      

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

      【讨论】:

        【解决方案3】:
        print [hex(no) for no in a_list]
        

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

        【讨论】:

          【解决方案4】:

          对于python3,使用以下代码:

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

          【讨论】:

            【解决方案5】:

            如果你想要零填充:

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

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

            【讨论】:

              猜你喜欢
              • 2019-01-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-14
              • 1970-01-01
              相关资源
              最近更新 更多