如何将RC522 UID十六进制字节转换为十进制?

问题描述 投票:0回答:1

我在Raspberry pi 3上将RC522与NodeJS和节点包mfrc522-rpi一起使用当我尝试读取UID时,得到了十六进制数组: [E9, E5, 98, 94]

但是这个UID与我的RFID阅读器不同。我得到了 15258857

我尝试加入十六进制并转换为十进制,但结果仍然不同: 0xE9E59894.toString(10) === "3924138132"

如何正确将UID转换为十进制?

c++ c node.js raspberry-pi rfid
1个回答
0
投票

大多数Rfid阅读器以Little Endian格式返回UID。这意味着最高有效字节在末尾。

您可以在解析为整数之前uid.reverse()(在python中)。请记住在十六进制值的左侧填充零。此python代码以字符串格式返回uid作为十进制,对我有用:

uid = [0xE9, 0xE5, 0x98, 0x94]
uid.reverse()
decimal_uid = str(int(''.join([bin(uid[i])[2:].zfill(8) for i in range(len(uid))]), 2))
print(decimal_uid)  # it prints '2493048297'
© www.soinside.com 2019 - 2024. All rights reserved.