Чтение байтовых данных из метки NFC во флаттере - PullRequest
0 голосов
/ 01 марта 2019

Итак, я новичок в Flutter / Dart и пишу приложение, которое использует пакет flutter_nfc_reader / flutter_nfc_reader.dart для чтения тега NFC.Содержимое MimeMediaRecord является байтовым массивом.Содержимое NfcData () -> возвращает строку, которая содержит идентификатор Mime, например, «cp / Morn» в моем случае, за которым следуют байтовые данные.

Я разделил идентификатор Mime с помощью String.substring () итеперь у меня есть строка, содержащая только байтовые данные? Надеюсь?.

Мой вопрос: как мне перебрать строку содержимого и извлечь каждый байт, а затем сгруппировать каждые 4 байта в целое число?

Я закодировал данные тега, используя этот метод C:

void uint32_to_ByteArrayLE (uint32_t x, uint8_t* byteArray)
{
    byteArray[0] = (uint8_t)(x >>  0);
    byteArray[1] = (uint8_t)(x >>  8);
    byteArray[2] = (uint8_t)(x >> 16);
    byteArray[3] = (uint8_t)(x >> 24);
}

Мне понадобится эквивалент этого метода C в Flutter / Dart:

void ByteArrayLE_to_uint32 (const uint8_t* byteArray, uint32_t* x)
{

  *x = (uint32_t)byteArray[0] <<  0 | 
       (uint32_t)byteArray[1] <<  8 | 
       (uint32_t)byteArray[2] << 16 | 
       (uint32_t)byteArray[3] << 24;
}

Это пример моегосодержимое, которое содержит пять MimeMediaRecords

�cp/Morn��������������������cp/Lunch��������������������cp/After��������������������cp/Eve��������������������Rcp/cpjd

Проще говоря: «Как создать массив байтов из строки и обработать 4 байта в целое число?»

Код utf8.en и руныметоды не возвращают правильные данные ... Я думаю, потому что целочисленные данные находятся за пределами диапазона строки?возможно?

Любое понимание будет оценено

...