从现有脚本增加数组

时间:2018-01-14 05:47:24

标签: python arrays fuzzing

我有以下脚本:

while a < 17878103347812890000:
    a += 1  # increment

print(id, '#', hex(a)[2:], sep='')

我正在尝试将此脚本的操作转换为数组:

frame = xxxx.fram(xxx, [1, 2, 3, 4, 5, 6, 7, 8])

我对此问题的目标是将while循环转换为数组,使其从0000000000000000开始并增加到FFFFFFFFFFFFFFFF

2 个答案:

答案 0 :(得分:0)

这是它的核心。我不知道原始代码中xxx是什么或id是什么......但这就是它

result = [ '#'+ hex(a)[2:] for a in range(0,17878103347812890000)]

答案 1 :(得分:0)

(您的代码已损坏,因此我会修复第三行被意外缩进的内容)

好的,首先让我们先解释一下初始函数的作用,然后我们就可以开发出一个解决方案:)。所以它正在做的是将所有整数值从0转换为17878103347812890000为十六进制然后打印它们,所以让我们分解代码;

  • while a < 17878103347812890000:循环遍历所有整数值
  • a += 1只是循环的另一部分向上递增
  • print(id, '#', hex(a)[2:], sep='')调用三个单独的打印调用,类似于在它们之间添加“+”
    • id我会忽略,因为你没有添加任何关于
    • 的细节
    • hex(a)[2:]将数字转换为十六进制,然后跳过0x部分(从第二个索引处开始)
    • sep=''停止分隔符打印行

好的,现在首先将它向下推,然后我们将其设为for循环(重要);

for a in range(0, 17878103347812890000):
  print(id, '#', hex(a)[2:], sep='')

现在我们创建一个包含这些细节的单个字符串的数组

arrayOfLines = [ str(id) + '#' + hex(a)[2:] for a in range(0, 17878103347812890000) ]
  

str(id)只是因为id不是一个字符串,如果是,那么删除str(...)部分并且只有`id +

注意:str(id) + '#' + hex(a)[2:] for a in range(0, 17878103347812890000)只是一个for循环,但它被称为“列表理解”(你很好地理解了预设条件下的列表结构)所以它创建了一个字符串(或文本)列表,所以现在你想要要打印在一起,所以我们使用.join所以我们写;

arrayOfLines = [ str(id) + '#' + str(hex(a)[2:]) for a in range(0, 17878103347812890000) ]
print("\n".join(arrayOfLines))

作为一个班轮;

print("\n".join([ str(id) + '#' + str(hex(a)[2:]) for a in range(0, 500)]))