【问题标题】:Python iterationPython 迭代
【发布时间】:2011-02-27 15:50:53
【问题描述】:

我正在尝试在 Python 中编写一个简单的脚本,该脚本将打印十六进制值和递增值,如下所示:

 char = 0
 char2 = 0

 def doublehex():
    global char,char2
    for x in range(255):
        char = char + 1
        a = str(chr(char)).encode("hex")
        for p in range(255):
           char2 = char2 + 1
           b = str(chr(char2)).encode("hex")
           c = a+" "+b
           print "testing with:%s"%(c)
doublehex()

输出:

testing with:01 01
testing with:01 02
testing with:01 03
[snip]
testing with:01 fd
testing with:01 fe
testing with:01 ff

Traceback (most recent call last):
  File "test2.py", line 16, in doublehex
   b = str(chr(char2)).encode("hex")
ValueError: chr() arg not in range(256)

其实我想做的是:

01 01
01 02
[snip]
01 ff
02 01
02 02

以此类推,直到ff ff。我的脚本有什么问题?

我好像也不能试试:

00 01
00 02

我不知道为什么。

【问题讨论】:

    标签: python loops hex for-loop increment


    【解决方案1】:
    for x in xrange(256):
        for y in xrange(256):
            print '%02x %02x' % (x, y)
    

    【讨论】:

      【解决方案2】:

      之前需要设置char2 = 0

      for p in range(255):
      

      实际上,您不需要计数器 - char,char2

      以下将从 0 工作到 ff

      for x in range(256):
          for p in range(256):
              print chr(x).encode("hex"),chr(p).encode("hex")
      

      【讨论】:

        【解决方案3】:

        为什么不做一些简单的事情?

        for x in range(0, int("FFFF", 16)):
            print "%x" % x
        

        【讨论】:

          【解决方案4】:

          还有一个班轮(减去进口):

          import itertools
          hexs = itertools.product(*([[chr(x).encode("hex") for x in range(256)]] * 2))
          

          【讨论】:

            【解决方案5】:

            如果您使用的是 python 2.6,则可以使用 4 行方式来执行您正在尝试的操作:

            import itertools
            
            char_pair_list = itertools.product(range(256),range(256))
            for char_pair in char_pair_list:
                print str(chr(char_pair[0])).encode("hex"), ',' , str(chr(char_pair[1])).encode("hex")
            

            【讨论】:

              【解决方案6】:

              要打印十六进制值,只需执行以下操作:

              for i in range(255):
                  print "%x" % i
              

              【讨论】:

                猜你喜欢
                • 2022-01-21
                • 1970-01-01
                • 2013-05-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-10-05
                • 1970-01-01
                相关资源
                最近更新 更多