Konwertowanie uint16_t na char w C

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.

atmal
  • Rejestracja:około 8 lat
  • Ostatnio:20 dni
  • Postów:913
1

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

Kopiuj
uint16_t adc = 23152;
char codeRssi[200];

itoa(adc, codeRssi, 10);

Failure of one test is a tragedy, failure of fifty is a statistic.
0

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

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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:

Kopiuj
#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/

edytowany 1x, ostatnio: vpiotr

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.