【问题标题】:RFID Unique serial number conversionRFID唯一序列号转换
【发布时间】:2016-04-07 08:31:34
【问题描述】:

我的 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

制造商系统截图:

【问题讨论】:

  • 为什么你从 usb readerpython 得到的小数不一样?..还是这两个不同的值?
  • 它们是相同的,但制造商将它们分为两个部分:8bit:91(01011011bin)和16bit:2233(0000100010111001bin)。当你合并这两个段时,你有:010110110000100010111001bin 什么是十进制的 0005966009
  • 制造商的卡上有一个 stcker,有这些数字:91,2233 和下一行:455272499385。我必须使用商店编号 455272499385 的数据库和我的 USB 阅读器接收 0005966009 所以那里一定是把这个 24bit 十进制转换成 40bit 十进制...
  • 是什么让你认为455272499385 是 40 位,相当于 24 位格式的 0005966009
  • Plus 你能解释一下为什么455272499385 是40bit 而0005966009 是24bit 格式吗?

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


【解决方案1】:

不,通常不可能将 24 位数字转换为 40 位数字。这样的转换意味着您将 16 位 额外信息 添加到 24 位值。这些额外信息不会凭空出现。

在你的情况下,数字是

  • 24 位格式:0005966009dec = 5B08B9<sub>hex</sub>
  • 8+16 位格式:091dec & 02233dec = 5B<sub>hex</sub> & 08B9<sub>hex</sub>
  • 40 位格式:455272499385dec = <b>6A00</b>5B08B9<sub>hex</sub>

因此,所有三个数字都包含 24 个公共位 (5B08B9<sub>hex</sub>)。 40 位数字有一个额外的前缀值<b>6A00</b><sub>hex</sub>

由于您没有透露您使用的 RFID 系统和标签(除了它们在 125 khz 上运行),因此无法判断该前缀是否是所有标签都相同的标准前缀,或者是否每个标签(或每个制造商、客户等)的前缀更改

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

尽管如此,如果您的所有读者都只阅读 24 位值,我不明白您为什么还要使用整个 40 位值。即使您已经拥有一个包含整个 40 位值的数据库,您也可以轻松地将该值修剪为 24 位值(只要低 24 位在所有标签中(足够)唯一)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多