将动态数据转换为数组中的十六进制

2024-04-27 20:54:20 发布

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

我正在用python编写智能卡并使用pyscard库。我有以下数据:

WRITE_PREF = [0X80, 0X12, 0X00, 0X01, 0X12, 0X01, 0X00, 0X00, 0X20, 0X00, 0X00, 0X00]

我正在接收字符串格式的随机数据(长度为10)。在转换为十六进制之后,我得到了带有随机字符串数据十六进制值的数组

问题: 十六进制值数组具有字符串形式的值

Example: ['0x33','0x32'....]

当我附加WRITE_PREF和这个十六进制数据时,我得到如下数组:

[128, 18, 0, 1, 18, 1, 0, 0, 32, 0, 0, 0, '0x33', '0x32']

我将第一部分转换为十六进制,并将整数的数组值替换为十六进制值。 当我使用命令传输数据时:

 card.connection.transmit(final_array_in_hex)

我犯了一个错误。我很确定这是因为数组中的值是十六进制字符串。如果我手动传输一些数据,如:

[0x33,0x32,0x30]

它工作得很好。所以问题一定是因为数组数据中的引号。例如:

['0x33','0x32','0x30']

有办法解决这个问题吗


Tags: 数据字符串命令example格式整数数组connection
1条回答
网友
1楼 · 发布于 2024-04-27 20:54:20

您有一个str表示十六进制数,让我们将其转换为int。我们使用int节省空间,而且int是灵活的。我们可以选择如何表示这个int

s = ['0x33','0x32']
s = [int(_s, base=16) for _s in s]
print(s) # defaults to displaying an int as decimal
print(list(f'0x{_s:x}' for _s in s)) # specify that we want to display as `x` or hexamdecimal

输出:

[51, 50]
['0x33', '0x32']

相关问题 更多 >