Python 从范围创建十六进制代码列表

Python 从范围创建十六进制代码列表,python,Python,我正在尝试创建一个已知范围内所有十六进制代码的列表。范围的示例包括。008000至00FFFF 400000至43FFFF E40000至E7FFFF。我希望使用excel或python创建一个列表。由于一些十六进制代码将有前导零,我还需要保持这种格式。我想将列表另存为文本文件。任何帮助都将不胜感激 只需将开始和结束转换为整数,然后使用列表理解来生成十六进制字符串列表 def hex_range(start, end): # start and end are specified as

我正在尝试创建一个已知范围内所有十六进制代码的列表。范围的示例包括。008000至00FFFF 400000至43FFFF E40000至E7FFFF。我希望使用excel或python创建一个列表。由于一些十六进制代码将有前导零,我还需要保持这种格式。我想将列表另存为文本文件。任何帮助都将不胜感激

只需将
开始
结束
转换为整数,然后使用列表理解来生成十六进制字符串列表

def hex_range(start, end):
    # start and end are specified as strings, e.g. '0088FF' or '0x0088FF'
    return ['{:06X}'.format(i) for i in range(int(start, 16), int(end, 16))]
(就像@metatoaster的评论所暗示的那样,
06X
格式字符串意味着“6个字符的宽度,用零代替空格填充空格,用十六进制代替十进制。”


要将其保存到文本文件中,请执行以下操作:

# assuming you've already read in start and end
hexes = hex_range(start, end)
with open('output.txt', 'w') as outfile:  # open a file to write to
    outfile.writelines(hexes)  # write each element of hexes as a separate line in the file
请尝试以下代码:

start_str = input('Start of range: ')
end_str = input('End of range: ')
filename = input('Output filename: ')

start = int(start_str, 16)
end = int(end_str, 16)

with open(filename, 'w') as f:
    for i in range(start, end+1):
        f.write('{:06X}\n'.format(i))
输出
out.txt
则包含十六进制代码


根据OP的要求,以下是一个版本,该版本还向每个输出行附加了一个代码:

start_str = input('Start of range: ')
end_str = input('End of range: ')
filename = input('Output filename: ')
ccode = input('Code name: ')

start = int(start_str, 16)
end = int(end_str, 16)

with open(filename, 'w') as f:
    for i in range(start, end+1):
        f.write('{:06X}, {}\n'.format(i, ccode))
输出 顺序文件
查看“范围”和生成器表达式,您可以尝试
['%06X'%idx for idx in range(0x8000,0xffff)]
。注意,这不是代码编写服务。请发布您迄今为止的尝试,以及您在哪里遇到的问题。查看或了解更多相关详细信息。谢谢。我是python新手。但有人告诉我这是创建列表的最快方法。请给我看一个python代码示例,它可以创建保存到文本文件中的列表。写入文件的最简单方法是
open(,'w')。writelines()
我用一个示例更新了我的答案,说明了如何将列表保存到文本文件中,每行一项。如果你需要更多的东西,我建议你阅读一本教程,或者考虑到你想要函数的“结束”值是什么,确保你做的是正确的。如果该值应该是生成的最后一个值,那么您需要
range(int(start),int(end)+1)
我尝试将start替换为00FFFF.and结尾为400000示例def hex_range(00FFFF,400000),但出现了无效语法错误我已修复了我的解决方案-您想要使用
int(start,16)
int(end,16)
,指定数字应以16为基数。如果仍然存在错误,可能是因为您传递数字的方式。您可以将它们作为字符串(
“00FFFF”
“400000”
;如果您通过
input()
,从控制台读取,它们可能已经是这样)或作为格式正确的十六进制数(例如
0x00FFFF
0x400000
)进行传递。只是
00FFFF
不起作用-python会将其解释为base 8,而
F
在base 8中不存在。类似地,
400000
将被解释为base-10。我相信您将比您预期的少产生一个值。在您的示例中,您最后生成的编号将是
0080FAE
…比请求的最终范围值少一个。我想你想要
范围(开始,结束+1)
@Steve你说得对,我更新了我的答案。谢谢你指出!谢谢,效果很好,是的,输出格式为00800FF最后一个问题。是否可以为每个代码添加一些文本,我希望文本文件显示十六进制代码,然后添加逗号,然后添加ccode,其中ccode=是ccode=输入('代码名')@约翰:我在我的答案中增加了一个版本,在每一行后面都加上一个代码。请问逗号后面是否可能没有空格,所以它是十六进制代码逗号ccode,没有空格
start_str = input('Start of range: ')
end_str = input('End of range: ')
filename = input('Output filename: ')
ccode = input('Code name: ')

start = int(start_str, 16)
end = int(end_str, 16)

with open(filename, 'w') as f:
    for i in range(start, end+1):
        f.write('{:06X}, {}\n'.format(i, ccode))
Start of range: 08
End of range: 0F
Output filename: out.txt
Code name: the CODE
000008, the CODE
000009, the CODE
00000A, the CODE
00000B, the CODE
00000C, the CODE
00000D, the CODE
00000E, the CODE
00000F, the CODE