logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] [C] Jak uniknąć usunięcia zer przy rozbijaniu zmiennej dwubajtowej?

lewara 01 Lut 2020 18:18 555 6
  • #1 18442345
    lewara
    Poziom 5  
    Mam następujący problem: mam zmienną dwubajtową. Rozbijam ją na dwie zmienne bajtowe:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jednak powstaje problem, gdy zmienna tab[1] = 11111111 00001111
    Zera automatycznie są usuwane.
    W późniejszym łączeniu bajtów z liczby 11111111 00001111 robi mi się 1111 11111111.

    Jak temu zaradzić?
  • #2 18442392
    Konto nie istnieje
    Poziom 1  
  • #3 18442400
    lewara
    Poziom 5  
    drobok napisał:
    00001111 === 1111, na twoim miejscu sprawdziłbym czy przesuwasz o 8 a nie np o 4, lub nie pomyliłeś LO z HI. Możliwe też, że te liczby zamieniasz na string - co bez %08d powoduje że te zera nie są dopisywane do stringa, a łączenie ciągów znaków powoduje w/w efekt.
    Powinieneś dać cały kod.


    Zdaje mi się że gdy do bajtu przypiszemy wartość 00001111, kompilator automatycznie usuwa 0 bo nie wpływają one na wynik.
    Jednak w połączeniu z poprzednim bajtem robią już dosyć sporą róznicę. Nie wiem tylko jak to opanować.

    W moim kodzie tab[1] = 110 01000000

    Dane, które otrzymuje 110 1000000
  • Pomocny post
    #4 18442408
    Konto nie istnieje
    Poziom 1  
  • #5 18442421
    lewara
    Poziom 5  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    drobok napisał:
    Kompilator nic nie usuwa, chyba że masz typ o zmiennej liczbie bitów. Powinieneś podać przykład który ci nie działa. Musisz podać jaki typ ma twoja tablica, oraz jak łączysz te bajty.


    bajtów jeszcze nie łacze , wysylam je poprzez UART
    [C] Jak uniknąć usunięcia zer przy rozbijaniu zmiennej dwubajtowej?

    Drugi odebrany bajt powinien mieć dopłenienie zerami z lewej strony do pełnego bajtu. Tzn jesli = 1111 powinien = 00001111.
  • Pomocny post
    #6 18442441
    Konto nie istnieje
    Poziom 1  
  • #7 20262776
    lewara
    Poziom 5  
    kod jest ok, masz problem z funkcją wyślij. tekst który zapewne wysyłasz nie zawiera tych zer bo to nie bajty tylko reprezentacje tekstowe poszczególnych bitów.
REKLAMA