我的USB-RFID读卡器从卡上接收24位ID . 我可以将此ID转换为8位/ 16位格式 . 但是如何将其转换为40位格式?
一个标签的示例:
-
24位十进制格式(我从读者那里得到):0005966009
-
8,16位二进制格式(通过Python转换):01011011,0000100010111001
-
8,16位十进制格式(通过Python转换):91,2233
-
40位十进制格式(由制造商提供):455272499385
如何从24位数字中获取该40位数?
标签标准:唯一,125 kHz
制造商系统的屏幕截图:
1 回答
不,通常不可能将24位数转换为40位数 . 这样的转换意味着您将16位额外信息添加到24位值 . 这些额外信息不会神奇地出现在任何地方 .
在你的情况下,数字是
24位格式:0005966009dec =
5B08B9hex
8 16位格式:091dec&02233dec =
5Bhex
&08B9hex
40位格式:455272499385dec =
6A005B08B9hex
因此,所有三个数字都包含24个公共位(
5B08B9hex
) . 40位数字的附加前缀值为6A00hex
.既然你没有透露你所使用的RFID系统和标签(除了它们在125 khz上运行),那么就无法判断该前缀是否是所有标签相同的标准前缀,或者该前缀是否更改为每个标签(或每个制造商,客户等)
如果所有标记的前缀相同,则可以轻松使用值
6A00hex
作为每个标记序列号的高16位 . 但是,如果不同标签的前缀可能不同,那么除了让读取器读取完整的40位序列号之外别无他法 .然而,如果所有读者只读取24位值,我不明白为什么你甚至想要使用整个40位值 . 即使您已经拥有一个包含整个40位值的数据库,您也可以轻松地将该值修剪为24位值(只要较低的24位在所有标记中都是(足够)唯一的) .