簡體   English   中英

將動態數據轉換為數組中的十六進制

[英]Converting dynamic data to hex in array

我正在使用 python 中的智能卡並使用 pyscard 庫。 我有以下數據:

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

我正在接收字符串格式的隨機數據(長度為 10)。 轉換為十六進制后,我得到包含隨機字符串數據的十六進制值的數組。

問題:十六進制值數組具有字符串形式的值。

示例:['0x33','0x32'....]

當我 append WRITE_PREF 和這個十六進制數據時,我得到這樣的數組:

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

我將第一部分轉換為十六進制,並將 integer 的數組值替換為十六進制。 當我使用命令傳輸數據時:

 card.connection.transmit(final_array_in_hex)

我得到錯誤。 我很確定這是因為數組中的值是十六進制字符串。 如果我手動傳輸一些數據,例如:

[0x33,0x32,0x30]

它工作正常。 所以問題一定是因為數組數據中的引號。 例子:

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

有沒有辦法解決這個問題?

你有一個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

Output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM