Как преобразовать шестнадцатеричные байты в массив uint8_t *? - PullRequest
0 голосов
/ 05 января 2020

У меня есть строка шестнадцатеричных байтов в этой форме: enter image description here

Как я могу преобразовать эти байты в массив uint8_t *?

Это изображение для отображения электронных чернил, и я хочу показать его с void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); из https://learn.adafruit.com/adafruit-gfx-graphics-library/graphics-primitives.

Я использую ESP8266 и шестнадцатеричные байты String загружается из файла SPIFFS. Спасибо.

Я пробовал:

File f = SPIFFS.open("/photo1.txt", "r");
      String input = f.readString();
      Serial.println(input);

      Serial.println("Converting to vector");
      std::vector<uint8_t> output;
      for (unsigned i = 0; i < input.length(); i += 2) {
        char byte_digits[3] = { input[i], input[i + 1] };
        int value = strtoul(byte_digits, nullptr, 16);
        output.push_back(value);
      }

      Serial.println("Converting to uint8_t arr");
      uint8_t *img = output.data();

ESP перезапускается при достижении Конвертация в вектор: enter image description here

1 Ответ

1 голос
/ 06 января 2020

Исключением (29) является 'storepro запрещеноcause'.

Попробуйте изменить условие на input.length () - 2.

...