【问题标题】:Generate a list of hex bytes in Python在 Python 中生成十六进制字节列表
【发布时间】:2011-11-17 08:05:13
【问题描述】:

我想生成所有 256 字节组合的十六进制值列表。

基本上,我想要例如'A' => '\x41'。我只找到了能够转换 'A' => '41' 的模块,这不是我想要的。

我该如何解决这个问题?有谁知道合适的模块或算法(因为我想避免硬编码 256 个十六进制值......)?

【问题讨论】:

  • ASCII 实际上只有 128 个值 - 你的意思是 ASCII 还是“适合 8 位”?就此而言,您只想要可打印的字符吗?
  • 为什么要将它放回字符串中? '\x41' 等价于'A'(试试看)。或者你想要字符串文字r'\x41'
  • “我只找到了模块”?哪个?这似乎不明智。也许你是说函数?

标签: python hex byte ascii


【解决方案1】:
>>> hex(ord('A'))
'0x41'

这是你想要的吗?

也许是这样的?

for o in range(128):
    print chr(o), hex(o)

或许

import string
for c in string.printable:
    print c, hex(ord(c))

【讨论】:

    【解决方案2】:

    ord('A') 以整数形式返回 ASCII 值(在“A”的情况下为 65)。你可以在任何你想要的基础上考虑一个整数。 hex(ord('A')) 为您提供了一个不错的字符串(在本例中为“0x41”),print "%x" % ord('A') 也是如此。

    【讨论】:

      【解决方案3】:

      获取每个ASCII大小写字母的数值作为一个列表:

      from string import ascii_letters
      [ord(c) for c in ascii_letters]
      

      【讨论】:

        【解决方案4】:

        所以,您找到了处理一个字符的方法,让我们在循环或列表理解中对所有字符进行处理。 [(chr(x), '%x' % x) for x in range(256)]

        这将创建一个带有 (char, string with value in hex) 的列表。 如果您希望以其他方式显示值,则可以使用格式字符串,例如

        >>> 'x%02x' % ord('\r')
        'x0d'
        

        【讨论】:

          【解决方案5】:

          您是否尝试将b'\x00' 一直打印到b'\xff'?如果是这样,那么我的假设是最佳答案应该包含 256 的范围

          for o in range(256):
              print(hex(o))
          

          【讨论】:

            猜你喜欢
            • 2022-12-12
            • 2022-01-23
            • 2023-03-14
            • 1970-01-01
            • 2017-09-13
            • 2022-01-07
            • 1970-01-01
            • 2015-08-08
            • 1970-01-01
            相关资源
            最近更新 更多