Как массив uint8_t может иметь строковый ввод и нормально работать, но
не когда переменная задействована
Строковый литерал, по сути, представляет собой массив символов с завершающим нулем. Так
static uint8_t hello[] = "world";
По существу
static uint8_t hello[] = {'w','o','r','l','d','\0'};
Что также является обычной инициализацией копирования массива, и необходимый размер автоматически определяется из значения, поэтому вы можете использовать [], а не [размер]
Как создать переменную int в качестве входных данных для массива uint8_t
Поскольку размер int
известен во время компиляции, вы можете создать массив размером int
и скопировать в него значение int
побайтно с memcpy
:
int world = 1;
static uint8_t hello[sizeof(world)];
memcpy(hello, &world, sizeof(hello));
Как создать строковую переменную в качестве входных данных для массива uint8_t
Вам необходимо заранее знать длину String
, чтобы вы могли создать массив, достаточно большой, чтобы соответствовать значению String
:
String world = "Hello"; // 5 chars
static uint8_t hello[5];
world.toCharArray((char *)hello, sizeof(hello));
В зависимости от того, что вам нужно, вы можете также обработать завершающий ноль.