RFID唯一的序列号转换

时间:2016-01-03 16:56:45

标签: python number-formatting uniqueidentifier rfid serial-number

我的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 个答案:

答案 0 :(得分:2)

不,一般情况下,将24位数字转换为40位数字是不可能的。这样的转换意味着您将16位额外信息添加到24位值。这些额外的信息不会神奇地突然冒出来。

在您的情况下,数字是

  • 24位格式:0005966009 dec = 5B08B9hex
  • 8 + 16位格式:091 dec & 02233 dec = 5Bhex& 08B9hex
  • 40位格式:455272499385 dec = 6A005B08B9hex

因此,所有三个数字都包含24个公共位(5B08B9hex)。 40位数字的附加前缀值为6A00hex

由于您没有透露RFID系统和您正在使用的标签(除了它们以125 khz运行之外),因此无法判断该前缀是否是一个标准前缀,对于所有人来说都是相同的标签或每个标签(或每个制造商,客户等)的前缀是否发生变化

如果所有标记的前缀相同,则可以轻松地使用值6A00hex作为每个标记序列号的高16位。但是,如果不同标签的前缀可能不同,那么除了让读取器读取完整的40位序列号之外别无他法。

然而,如果所有读者只读取24位值,我就不明白为什么你甚至想要使用整个40位值。即使您已经拥有一个包含整个40位值的数据库,您也可以轻松地将该值修剪为24位值(只要较低的24位在所有标记中都是(足够)唯一的)。