Aktywne Wpisy
zmarnowany_czas +236
Jeszcze 5 lat temu regularnie rodziło się u nas po ponad 30 tys. dzieci miesięcznie.
Ostatni raz 30 tys. urodzin w jednym miesiącu mieliśmy na początku 2021.
W połowie 2022 spadliśmy już poniżej 25 tys. urodzeń miesięcznie
A
Ostatni raz 30 tys. urodzin w jednym miesiącu mieliśmy na początku 2021.
W połowie 2022 spadliśmy już poniżej 25 tys. urodzeń miesięcznie
A
źródło: m31165535,SS
Pobierz
pieknylowca +151
Bogactwo część główna #frajerzyzmlm
źródło: IMG_20240723_102304
Pobierz




Załóżmy, że jest zdefiniowana np. następująca struktura:
struct struktura {uint16_t x;uint8_t y;uint8_t z;}I chciałbym pobrać np. 2 bajt z tej struktury, w tym przypadku była by to bardziej znacząca część zmiennej x. Jak to zrobić?
W tej chwili robiłem to w ten sposób, że kopiowałem strukturę do tablicy charów. Jednak chcę uniknąć tej operacji, ze względu na długi czas wykonywania (na mikrokontrolerze) i chcę mieć bezpośredni dostęp do kolejnych bajtów.
memcpy(buffor, (void *)&s, sizeof(struktura));Jakieś pomysły? :)
struktura s;
char* ptr = (char * )&s
int16_t* ptr2 = (int16_t * )(ptr+2)
Komentarz usunięty przez autora
ale ja osobiście bałbym się castować całą strukturę i wyciągać pojedyncze bajty bojąc się, że kompilator może zrobić psikusa i celem jakiejś optymalizacji przestawi sobie kolejność zmiennych w strukturze, co innego castować samą składową x - tutaj wystarczy znać endianowość.
union asd
{
uint16_t x;
char
http://ideone.com/dE7KPj
Komentarz usunięty przez autora
@wykoszonytrawnik: Lub mniej znacząca. Zależy od endianowości :-)
ptr+2wskaże na trzeci (a nie drugi) bajt struktury. Secundo, jeżeli potraktujesz go wskaźnikiem naint16_t, to wartość będzie zbudowana z dwóch bajtów, trzeciego i czwartego. Tertio, branie tych wartości ze znakiem nie ma najmniejszego sensu, szczególnie, że oryginały były unsigned. Wreszcie quarto, arytmetyka wskaźników trochę tu zaciemnia obraz.@wykoszonytrawnik: Ja zrobiłbym tak:
uint8_t * byte_array = (uint8_t *)A czy ze znakiem czy bez to już kwestia co potem robi z tymi danymi.