在python(\x0..\xff)中对十六进制字符串进行计数



我想像这样对字符串"\x00"进行计数:

\x01、\x02、\x03、\x04。。。。\xff,然后再一次\x00。。。等

但我不知道该怎么做。

我试过这样的东西:

counter= "x00"
for i in range(1, 2000):
counter= int(counter,16) +1

但它显然不起作用:基为16的int((的无效文字:"\x00">

我希望你们有更好的主意。非常感谢!

您可以使用chr(..)[Python doc]内建将int转换为相应的字符。

例如,我们可以用构造这样的字符串

from itertools import chain
''.join(chr(i) for i in chain(range(256), range(254, -1, -1)))

这给了我们:

>>> ''.join(chr(i) for i in chain(range(256), range(254, -1, -1)))
'x00x01x02x03x04x05x06x07x08tnx0bx0crx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x7fx80x81x82x83x84x85x86x87x88x89x8ax8bx8cx8dx8ex8fx90x91x92x93x94x95x96x97x98x99x9ax9bx9cx9dx9ex9fxa0¡¢£¤¥¦§¨©ª«¬xad®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±°¯®xad¬«ª©¨§¦¥¤£¢¡xa0x9fx9ex9dx9cx9bx9ax99x98x97x96x95x94x93x92x91x90x8fx8ex8dx8cx8bx8ax89x88x87x86x85x84x83x82x81x80x7f~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! x1fx1ex1dx1cx1bx1ax19x18x17x16x15x14x13x12x11x10x0fx0erx0cx0bntx08x07x06x05x04x03x02x01x00'

或者以类似的方式打印字符:

for i in range(256):
print(chr(i))
for i in range(254, -1, -1):
print(chr(i))
from itertools import cycle
hx = lambda i: '\x' + hex(i//16)[2:] + hex(i%16)[2:]
counter = cycle(map(hx, range(256)))
for i in range(2000):
print(next(counter))

最新更新