Mam tablicę z losowymi wartościami np: { 6841 , 1234} i chcę wyświetlić wartości kolejnych bajtów tej tablicy. Wiem jak wyświetlać adresy i wartości elementów tablicy z użyciem wskaźników ale nie wiem jak z tymi bajtami... mam wrażenie że robię błędy z typami danych ale to tylko moje przypuszczenia. Jeżeli ktoś mógł by mi wytłumaczyć jak można to zrobić
i na czym właściwie polega wyświetlanie pojedynczych bajtów będę wdzięczny. :)
Dodam że chodzi o język C (nie umiem jeszcze składni c++).
0
2
Zrzutuj wskaźnik do tej tablicy na wskaźnik od char. Wypisz.
1
Tak jak @Shalom napisał, ale najlepiej rzutuj na unsigned char
(albo jeszcze lepiej: uint8_t
).
int tab[] = {6841, 1234};
for(unsigned i = 0; i < sizeof(tab); ++i){
uint8_t byte = *((uint8_t*)tab + i);
printf("hex: 0x%02X\tdec: %3u\n", byte, byte);
}
0
Tak mi się wydaje czytelniej:
#include <stdio.h>
#include <stdint.h>
int main() {
int table[] = {6841, 1234};
uint8_t* bytes = (uint8_t*)table;
for(size_t index = 0; index < sizeof(table); index++) {
printf("hex: 0x%02hhX\tdec: %3hhu\n", bytes[index], bytes[index]);
}
return 0;
}
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.