Skocz do zawartości

Połączenie liczb binarnych


Ra5273x

Pomocna odpowiedź

Witam, potrzebuje połączyc zmienne w jeden ciąg znaków binarnych a potem zamienić to na wartośc hex.

byte ZNAK_1 = 0x0C //001100 BINARNIE
byte ZNAK_2 = 0x0C //001100 BINARNIE
byte ZNAK_3 = 0x0C //001100 BINARNIE
byte ZNAK_4 = 0x0C //001100 BINARNIE
  
// CIAG ZNAKOW 001100001100001100001100     //PODZIELONY DLA WIDOCZNOSCI    001100 001100 001100 001100
// WARTOSC HEX OTWORZYMANA PO ZAMIANIE CIAGU NA HEX 30C30C
  

I właśnie nie wiem jak z tych zmienych zrobić ciąg znaków.

Screenshot_377.png

Edytowano przez radex324
Link do komentarza
Share on other sites

Interesuje Ciebie cos takiego jak przesuniecia bitowe...tworzysz zmienna 4-bajtowa i przesuwasz bajty na odpowiednie miejsca i otrzymujesz to co chcesz...liczbe Hex mozesz wyswietlic w monitorze bez ceregieli...

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

uint32_t liczba_32b =  ((uint32_t)bajt1 << 24) | ((uint32_t)bajt2 << 16) | (bajt3 << 8) | (bajt4);

cos takiego..

To moze powiedz do czego takiego zapisu potrzebujesz, bedzie prosciej doradzic

Edytowano przez farmaceuta
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Kodowanie znaków w liczniku pojazdu poprzez linie CAN, licznik obsługuje komendy składające się z 4 znaków(ASCI) gdzie każdy znak jest wartością 6 bitową i 4 znaki są zakodowane na 3 bitach np znaki "AAAA" to "30C30C"

Link do komentarza
Share on other sites

@farmaceuta

uint32_t liczba_32b =   ((uint32_t)bajt1 << 18) | ((uint32_t)bajt2 << 12) | (bajt3 << 6) | (bajt4);

Zmodyfikowałem kod tak aby uciąć 00 na początku i kod już działa pokazuje się ciąg "1100001100001100001100" Dziekuje bardzo za rozwiązanie mojego problemu 😄 

  • Lubię! 1
Link do komentarza
Share on other sites

Mozna jeszcze do kazdego bajtu dopisac "obcinanie" bitow...chodzi o to ze jesli np. na drugim bajcie pojawilo by sie cos wiekszego niz 6bitow to w kodzie powyzej starsze bity wyladuja na mlodszych bitach bajtu pierwszego...i bedzie blad...

bajt1 &= 0x3F;
bajt2 &= 0x3F;
bajt3 &= 0x3F;
bajt4 &= 0x3F;

Cos takiego mozesz dopisac przed laczeniem tych bajtow i powinno byc ok...

Edytowano przez farmaceuta
  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.