Преобразование из массива unsigned int в массив unsigned char

Я не знаю, как правильно преобразовать массив unsigned int в массив unsigned char. Я хотел бы получить несколько предложений.

Чтобы быть более ясным, моя проблема в том, что у меня есть функция, которая читает память, помещая данные в массив unsigned int. Я хочу получить эти данные и преобразовать их в беззнаковый символ, чтобы вставить, например, последовательный порт.

Спасибо


person Leandro Lima    schedule 21.05.2013    source источник
comment
Это довольно расплывчато. Чего вы пытаетесь достичь?   -  person Nik Bougalis    schedule 21.05.2013
comment
Что ты действительно хочешь делать? Если вы хотите переинтерпретировать байты, достаточно простого преобразования. Если вы хотите сохранить значения (предположим, что все они находятся в диапазоне [0; 255]), вам придется написать цикл и скопировать все в новый массив.   -  person marcus    schedule 21.05.2013


Ответы (1)


Вы можете использовать элемент массива uint элемент за элементом

for (i=0 ; i<arrayLength ; i++) processuChar((unsigned char) uintarray[i]);

или вы можете создать новый массив и скопировать элементы

unsigned int uintarray[N];
unsigned char uchararray[N];

for (i=0 ; i<N ; i++) uchararray[i] = (unsigned char)uintarray[i];

а затем использовать этот новый массив uchararray.

Или вы предпочитаете динамически выделять новый массив перед копией

unsigned char *uchararray = malloc(sizeof(unsigned char) * N);
for (i=0 ; i<N ; i++) uchararray[i] = (unsigned char)uintarray[i];

В этом случае (динамическом) вам придется освободить массив, когда он вам больше не нужен.

free (uchararray);
person Breaking not so bad    schedule 21.05.2013