Чтение данных с карты Mifare Ultralight

Пытаюсь на Java реализовать чтение данные NFC-метки с карты Mifare Ultralight.

делаю это через такой метод (класс имеет свойство rfCard, остальную реализацию класса смысла выдавать сюда нет):

        public String readNFC() {
        if (this.rfCard instanceof MifareUltralightCard) {
            try {
                // Приведение карты к нужному типу.
                MifareUltralightCard card = ((MifareUltralightCard) rfCard);
                // Инициализация новой строки для результата.
                String res = new String();

                // Инициализация буфера (размером 64 байта) для чтения данных карты.
                ByteBuffer buff = ByteBuffer.wrap(new byte[64]);
                // По спецификации карта содержит 4 страницы по 16 байт. Читаем каждую страницу.
                buff.put(card.read(0));
                buff.put(card.read(1));
                buff.put(card.read(2));
                buff.put(card.read(3));
                // Конвертируем полученные данные из буфера в строку.
                res = Utils.byteArray2String(buff.array());

                // Проверочные выводы в консоль.
                DumpModel.writeToApplicationLog(DumpModel.INFO, "########## card.getID(): " + Arrays.toString(card.getID()));
                DumpModel.writeToApplicationLog(DumpModel.INFO, "########## card.getID(): " + Utils.byteArray2String(card.getID()));
                DumpModel.writeToApplicationLog(DumpModel.INFO, "########## card.getIDInfo(): " + Arrays.toString(card.getIDInfo()));
                DumpModel.writeToApplicationLog(DumpModel.INFO, "########## card.getIDInfo(): " + Utils.byteArray2String(card.getIDInfo()));
                // Возвращаем результат метода.
                return res;
            } catch (DeviceException e) {
                e.printStackTrace();
            }
        }
        return "";
    }

В консоли вижу:

########## card.getID(): [83, -26, -61, 35, 112, 0, 1]
########## card.getID(): 53E6C323700001
########## card.getIDInfo(): [0, 68, 0, 83, -26, -61, 35, 112, 0, 1]
########## card.getIDInfo(): 00440053E6C323700001

А в результат получаю вот такую HEX последовательность (64 байта = 128 символов).

53E6C3FE2370000152480000E11012002370000152480000E11012000103A00C52480000E11012000103A00C34030DD1E11012000103A00C34030DD101095402

на карте записан текст "Preved" - записал через NFCTools утилиту для телефона. Подскажите пожалуйста, как получить содержимое NFC-метки с карты из этой строки байт? Алгоритм не обязательно нужен на Java, можно словами. Благодарю!

Используется класс MifareUltralightCard из библиотеки CloudPOS SDK


Ответы (0 шт):