我在Raspberry pi 3上将RC522与NodeJS和节点包mfrc522-rpi
一起使用当我尝试读取UID时,得到了十六进制数组:
[E9, E5, 98, 94]
但是这个UID与我的RFID阅读器不同。我得到了
15258857
我尝试加入十六进制并转换为十进制,但结果仍然不同:
0xE9E59894.toString(10) === "3924138132"
如何正确将UID转换为十进制?
大多数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'