long umwandeln in 3 bytes

Gast #5685313
Lesenswert?

Hallo,

ich habe eine Zahl (max.) 8388607 und möchte die in 3 Bytes aufteilen um 
diese auf 3 595 Shiftregister schieben zu können.

Für 2 bytes habe ich etwas gefunden, aber wie hänge ich da ein 3 byte 
dran?


long toConvert = 8388607;
byte firstByte = byte(toConvert >> 8);
byte secondByte = byte(toConvert & 0x00FF);

Vielen dank
Gast #5685333
Lesenswert?

Hans schrieb:
> long toConvert = 8388607;
> byte firstByte = byte(toConvert >> 8);
> byte secondByte = byte(toConvert & 0x00FF);
1
long toConvert = 8388607;
2
byte zeroByte = byte(toConvert & 0xFF);
3
byte firstByte = byte((toConvert >> 8) & 0xFF);
4
byte secondByte = byte(toConvert >> 16)& 0xFF);
Gast #5685541
Lesenswert?

union ist ausschließlich zum Speicher Sparen und nicht zum Daten 
konvertieren da. Das Ergebnis einer union-Konvertierung ist in C 
Plattform-abhängig und in C++ (und darum handelt es sich vermutlich, 
sieht nach Arduino aus) ist es ganz verboten und kann beliebig schief 
gehen. Bitshifts sind die einzig korrekte Variante. Das steht auch alles 
im verlinkten Artikel.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren