Łącznie dwóch bajtów w jedną liczbę

0

Witajcie, niestety ale nie jestem dobrym programistą w Delphi - w sumie to nie znam tego języka. Jednak stanąłem teraz przed potrzebą napisania prostej aplikacji. Zajmuję się programowaniem mikrokontrolerów avr C, chcę zrealizować komunikację po rs-232, z procesora wysyłam sobie do programu zmienne typu int16_t dzieląc je na dwa bajty i wysyłam w odpowiedniej kolejności. W programie po stronie PC odebrane trafiają do tablicy bajtów. Wygląda to mniej więcej tak:
ramka[1] = 20;
ramka[2] = 123;

Czyli mam dwie liczby 00010100 oraz 01111011, chciałbym to jakoś połączyć w jedną liczbę 16-bitową 0001010001111011 i uzyskać wynik 5243

Pewnie jest to zadanie łatwe, jednak siedzę nad tym już dość długo i nie potrafię wpaść na optymalne rozwiązanie. Zależy mi, aby działało to również dla liczb ujemnych.

Z góry dziękuję za pomoc.

1

a * 256 + b albo a shl 8 + b z czego do tego drugiego a musi być co najmniej Word

1

ramka[1] = MSB, ramka[2] = LSB

var w:Word;
  w:=(ramka[1] shl 8) or ramka[2];
0

Dziękuję, sposób działa dla liczb dodatnich. Przy liczbie ujemnej (nadaje -5243) otrzymuję 60293 - jak można temu zaradzić w Delphi?

1

SmallInt zamiast Word.

0

Działa doskonale, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1