Как сжать уникальный идентификатор объекта в 96-битной памяти RFID - PullRequest
0 голосов
/ 20 апреля 2020

Технология RFID в некоторых странах стоит дорого, и ограничение заключается в том, чтобы хранить данные в 96-битном теге памяти. Система, которую я использую, имеет 24-символьный код, который соответствует типу упаковки / содержимого, и, поскольку она имеет 128 бит, это дорого с точки зрения памяти.

Поэтому я хотел бы написать программу на Python, поэтому что я могу сжать тот же 24 код до 96 бит. Если любое другое программное обеспечение, например C, может помочь, пожалуйста, дайте мне знать. Я также должен иметь возможность прочитать его и преобразовать.

Пример идентификационного кода: M1P100000812341567678991

Код

import zlib
import bz2
a = 'M1P100000812341567678991'
b = a.encode()
c = zlib.compress(b, level=9)

Спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Если у вас 96 бит, то это 12 байтов. Если первые три символа вашего идентификатора имеют алфавитное значение c, то они вписываются в первые три байта. Остальное, если принять двоичное число, должно вписаться в 9 байтов:

a = 'M1P990000812341567678991'
head = a[:3]
tail = a[3:]
head = head.encode('utf-8')
tail = int(tail).to_bytes(9, byteorder='little')
print(head.hex())
print(tail.hex())

Вывод (в шестнадцатеричном формате, но два байтовых массива имеют длину 3 и 9 байтов)

4d3150
0fea4b57936d05ab35
...