2016-01-03 79 views
2

我的USB-RFID讀卡器從卡上接收到一個24位ID。我可以將此ID轉換爲8位/ 16位格式。但我怎樣才能將它轉換成40位格式?RFID唯一序列號轉換

示例一個標籤:

  • 24位十進制格式(如我從讀取器獲得):0005966009
  • 8,16位二進制格式(通過Python換算):01011011,0000100010111001
  • 8,16位十進制格式(通過Python換算):91,2233
  • 40位十進制格式(由生產商提供):455272499385

如何從24位數中得到40位數?

標籤標準:獨特的,125千赫從製造商的系統

截圖:

+0

爲什麼從* usb閱讀器*和* python *得到的小數是不一樣的?..或者是那兩個不同的值? –

+0

它們是相同的,但製造商將它們分爲兩部分:8位:91(01011011bin)和16位:2233(0000100010111001bin)。當你合併這兩個段你有:010110110000100010111001bin什麼是0005966009在十進制 – AvS

+0

從製造商卡上有一個stcker,有這些數字:91,2233和在下一行:455272499385.我必須使用的數據庫商店號碼455272499385和我的USB讀卡器recive 0005966009,所以必須有一個把這個24位小數轉換爲40位小數的技巧...... – AvS

回答

1

沒有,一般是不可能把一個24位數爲40位數字。這種轉換意味着您將16位額外信息添加到24位值。這額外的信息不會神奇般地出現。

在你的情況下,該數字是

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

因此,所有三個數字都包含24個公共位(5B08B9hex)。 40位數字有一個額外的前綴值6A00hex

既然您沒有透露您使用的是什麼RFID系統和您正在使用什麼標籤(除了它們在125千赫茲上運行),無法判斷該前綴是否是某個標準前綴,對於所有標籤是相同的或者如果每個標籤(或每個製造商,客戶等)的前綴更改

如果所有標籤的前綴相同,則可以輕鬆使用值6A00hex作爲每個標籤序列號的高16位。但是,如果前綴對於不同的標籤可能不同,那麼除了讓讀取器讀取完整的40位序列號外沒有別的辦法。不過,如果你所有的讀者只讀24位的值,我不明白你爲什麼要使用整個40位的值。即使您已經有一個包含整個40位值的數據庫,您也可以輕鬆地將該值修改爲24位值(只要所有標籤中的較低24位都是(足夠)唯一的)。