Wie am besten 2x8bit in 16bit und danach in Dezimal umwandeln mit Bascom?

Gast #837218
Hallo,

ich bekomme über uart zwei mal 8bit, also zwei bytes zugesendet.

Daraus muss ich ein 16 bit byte herstellen. das geht ja indem man die 
binären zahlen von den zwei bytes zusammenzählt, also einfach 
hintereinander schreibt.

Wie mache ich dann aus den 16 bits eine Dezimalzahl?

Also theoretisch weis ichs ja, aber ich muss das in Bascom 
programmieren.

Kann mir da jemand ein paar tips geben?

Gibt es in Bascom einen Befehl, mit dem das umrechnen funktioniert?

Danke

Gregor
Gregor wrote:

> Daraus muss ich ein 16 bit byte herstellen. das geht ja indem man die
> binären zahlen von den zwei bytes zusammenzählt, also einfach
> hintereinander schreibt.

Was soll das Hintereinanderschreiben bewirken?
Garnichts.
Du mußt eine Operation durchführen:

wert = highbyte * 256 + lowbyte



> Wie mache ich dann aus den 16 bits eine Dezimalzahl?

Garnicht, Zahlen werden CPU-intern immer binär gespeichert.

Du mußt sie einfach nur ausgeben, dabei erfolgt automatisch die 
Umwandlung.


Peter
Gast
Hallo Peter,

entschuldige ich bin noch Anfänger und verstehe das noch nicht wirklich.

Ich habe mir folgendes gedacht:

ich bekomme zb. 2 bytes (aus einem String) zugeschickt: 38 und 34

Die sind ja in Binär geschrieben: 00100110 und 00100010

Und wenn ich die zwei hintereinanderschreibe dann folgt 
0010011000100010.

Dies wiederum in Dezimal lautet:9762

Und genau dass muss ich irgendwie in Bascom realisieren.
8 + 8 bits =  9 bits
8 x 8 bits = 16 bits

2x 8 bits zu übertragen brauchst du nur wenn du das ganze 
auseinanderhalten willst ansonsten addierst du das ganze in dem Fall 
reichen sogar 7 bit aus.

00100110
00100010
---------
01001000
Gast
>ich bekomme zb. 2 bytes (aus einem String) zugeschickt: 38 und 34
>Die sind ja in Binär geschrieben: 00100110 und 00100010
>Und wenn ich die zwei hintereinanderschreibe dann folgt
>0010011000100010.
>Dies wiederum in Dezimal lautet:9762
>Und genau dass muss ich irgendwie in Bascom realisieren.

Mach genau das, was Peter Danneger geschrieben hat:

38*256 + 34 = 9762
Ich verstand dich so, dass du genau dieses Ergebnis haben willst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.