Konwertowanie uint16_t na char w C

0

Cześć, zadam dla większości pewnie banalne pytanie, ale w internecie nie znalazłem nic interesującego co by działało i bym rozumiał.
Mam taką sytuację:

uint16_t adc;
char codeRssi [200];

i potrzebuję żeby do codeRssi wpisać adc ponieważ funkcja której przekazuję parametr wymaga char`a jak w postaci wyżej. Rzutowanie nie działa niestety (mam sporo nawyków z JAVY.
Próbowałem:"

codeRssi[200] = (char) adc;

próbowałem

memcopy(codeRssi , adc, 10);

Też niestety nie działa. Bardzo proszę o pomoc.

1

Jeżeli chodzi Ci o to aby liczba ze zmiennej adc była przekonwertowana na znaki użyj itoa

uint16_t adc = 23152;
char codeRssi[200];

itoa(adc, codeRssi, 10);
0

Zastanawia mnie czemu szukając z 30min w internecie nie trafiłem na taką metodę.
Bardzo mi pomogłeś, dziękuję.

1

Niestety odpowiedź nie jest taka prosta.

  1. itoa przyjmuje na wejściu int a nie uint16_t (chociaż pewnie zadziała auto-konwersja do int)
  2. itoa nie należy do standardu
  3. przy takiej konwersji warto podawać rozmiar bufora
  4. wydrukowanie uint16_t też nie jest oczywiste

Poprawna wersja:

#include <stdio.h>
#include <inttypes.h>
 
int main(void) {
    uint16_t adc = 23152;
    char codeRssi[20];
    snprintf(codeRssi, sizeof(codeRssi)/sizeof(char), "%" PRIu16, adc);
    printf("Wynik: [%s]\n", codeRssi);
    return 0;
}

https://ideone.com/f2Uwv7
Na podstawie: https://stackoverflow.com/a/12120500
i: http://www.cplusplus.com/reference/cinttypes/

1 użytkowników online, w tym zalogowanych: 0, gości: 1