как заполнить массив символов, заполненный uint8_t - PullRequest
0 голосов
/ 03 октября 2019

Я хочу создать массив символов и дать 8-битные значения. Например;buf[0] = 0000 0001; // 1 и buf[1] = 0000 0010; //2 и так далее.

Когда я наблюдаю это с точками останова, я вижу buf пусто . В других постах люди, которые дают советы типа «положить (без знака) приведение, если вы хотите видеть целые числа», это работает только для cout.

Все, что я хочу, это заполнить массив символов упорядоченными возрастающими числами. Я использовал int, но это 4 байта, вместо этого я подумал, что дать uint8_t лучше для заполнения массива char числами.

char *buf = new char[5];

    for (uint8_t i = 0; i < 5; i++)
    {
        buf[i] = i;
    }

[EDIT] Вот что я вижу, я изменил цикл int таким образом image

1 Ответ

1 голос
/ 03 октября 2019

Похоже, ваш отладчик предполагает, что все char* указывают на строки в стиле C. Так как первое char, с которым он сталкивается, имеет значение ноль, оно отмечает конец указанной строки.

Большинство отладчиков позволяют вам предоставлять произвольные выражения для оценки. Вероятно, он будет правильно отображать массив, если вы предоставите информацию о том, что он является на самом деле массивом, используя приведение:

reinterpret_cast<char(*)[5]>(buf)

В любом случае вы не должны использовать new, носкорее std::vector<char>, что дополнительно отладчик должен знать, как правильно отображать.

...