Преобразование байтового массива в строку (NXC) - PullRequest
1 голос
/ 11 сентября 2011

Есть ли способ показать массив байтов на экране NXT (с использованием NXC)?

Я пробовал вот так:

unsigned char Data[];
string Result = ByteArrayToStr(Data[0]);
TextOut(0, 0, Result);

Но это дает мне File Error! -1.

Если это невозможно, как я могу посмотреть значение Data[0] во время программы?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Если вы хотите показать байтовый массив в шестнадцатеричном формате, вы можете сделать это:

byte buf[];
unsigned int buf_len = ArrayLen(buf);

string szOut = "";
string szTmp = "00";

// Convert to hexadecimal string.
for(unsigned int i = 0; i < buf_len; ++i)
{
    sprintf(szTmp, "%02X", buf[i]);

    szOut += szTmp;
}

// Display on screen.
WordWrapOut(szOut,
            0, 63,
            NULL, WORD_WRAP_WRAP_BY_CHAR,
            DRAW_OPT_CLEAR_WHOLE_SCREEN);

Вы можете найти WordWrapOut() здесь .


Если вы просто хотите преобразовать его в ASCII:

unsigned char Data[];
string Result = ByteArrayToStr(Data);
TextOut(0, 0, Result);

Если вы хотите отобразить только один символ:

unsigned char Data[];
string Result = FlattenVar(Data[0]);
TextOut(0, 0, Result);
0 голосов
/ 11 сентября 2011

Попробуйте byte.byte - это unsigned char в NXC.

PS В BricxCC имеется отладчик, находящийся в стадии разработки (я полагаю, вы работаете в Windows).Посмотрите здесь .

РЕДАКТИРОВАТЬ: Код компилируется и выполняется, но ничего не делает.

...