Bit-Shifting
Julian von Mendel
- php
Hi,
ich möchte ein PHP-Programm schreiben, das mit einem Mikrocontroller kommuniziert. Ich möchte jetzt eine Zahl wie z. B. "65535" in zwei Bytes aufteilen und übertragen. Ich weiß aber nicht wie das geht. In C auf meinem Mikrocontroller hätte ich (uint8_t)(65536<<8)>>8 geschrieben um das erste Byte zu erhalten und 65536>>8 fürs zweite. In PHP geht das Bit-Shifting zwar von der Syntax her äquivalent, aber es gibt keinen 8-Bit-Datentyp. Ich könnte in 5 Zeilen eine Funktion schreiben, die manuell nur die letzten 8 Bit einer Variable in eine andere überträgt. Aber ich finde diese Lösung unelegant. Gibt es eine Funktion, Syntax o. Ä. mit der ich das Problem sauber lösen kann?
Schöne Grüße
Julian
Hi,
im Klartext bedeutet dass, dass ich eine Bitfolge wie
1111111111111110 = 65534
auf die letzteren 8-Bit
11111110 = 254
kürzen möchte.
Schöne Grüße
Julian
Hi,
[lang=php]
$secondbyte = bindec(substr(decbin($number),-8));
$firstbyte = $number>>8;
[/lang]
geht natürlich. Gefällt mir aber nicht.
Schöne Grüße
Julian
Hallo,
geht natürlich. Gefällt mir aber nicht.
dann gefällt Dir $sb=bindec(str_pad(decbin(($fb=$n>>8)),16,0))^$n;
vermutlich genauso wenig :(
Gruß aus Berlin!
eddi
Hi Julian,
$secondbyte = bindec(substr(decbin($number),-8));
Bit-Und mit 255 bzw. 0xff, also ($number & 0xff) dürfte dir ebenfalls $secondbyte geben. Besser?
Gruß,
Andreas.
Hi Andreas,
$secondbyte = bindec(substr(decbin($number),-8));
Bit-Und mit 255 bzw. 0xff, also ($number & 0xff) dürfte dir ebenfalls $secondbyte geben. Besser?
deutlich. Danke.
Schöne Grüße
Julian