将列表中的少量索引转换为十六进制

2024-05-15 23:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个整数列表arr,它有5个元素/索引,范围从arr[0]到arr[4]

最后三个元素是客户编号,范围从01到250000。我需要的是将它们转换为十六进制,使数组看起来像:

对于客户1, arr = [00,00,01,00,00]-cust num是最后三个字节

对于客户2, arr = [00,00,02,00,00]-cust num是最后三个字节

对于客户250000, arr = [00,00,90,d0,03]-cust num是最后三个字节,250000,十六进制=3D090

我知道我可以使用hex()函数将索引单独转换为十六进制,也可以将整个数组转换为十六进制,但是如何将值转换为十六进制,并按上述格式将其放入最后三个字节?你知道吗


Tags: 函数元素列表客户字节格式整数数组
2条回答

这将起作用:

i = 250000

constant = ['00', '00']

result = [constant + [first + second 
                      for first, second in zip(string[::2], string[1::2])][::-1] 
          for string in (f'{i:X}'.zfill(6) for i in range(1, 250001))]
print(result[0])
print(result[-1])

对于Python<;=3.5:

i = 250000

constant = ['00', '00']

result = [constant + [first + second 
                      for first, second in zip(string[::2], string[1::2])][::-1] 
          for string in ('{:X}'.format(i).zfill(6) for i in range(1, 250001))]
print(result[0])
print(result[-1])

输出:

['00', '00', '01', '00', '00']
['00', '00', '90', 'D0', '03']

说明:

首先,我们认识到可以使用字符串格式将每个数字转换为一个字符串,然后在需要时用0填充到长度6。你知道吗

接下来,我们将字符串分为两个字符块并反转它,以便它具有所需的表示形式。你知道吗

最后,我们将两个'00'字符串添加到每个内部list。你知道吗

可能会有帮助


import re
def split_hex_rev(number):
    arr = re.findall('..',hex(number).replace('x',''))
    while len(arr)<5:
        arr.append('00')
    arr.reverse()
    return arr

相关问题 更多 >