Чтение данных с карты 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