Schlagwort-Archive: Binär

BitBasics IT – 0x01 – Bits, Bytes & Binär

BitBasics IT - 0x01 - Bits, Bytes & Binär

(74 MB) 00:01:54

2017-04-16 10:01 🛈

Stom an, Strom aus – diese zwei Zustände sind die Grundlage moderner Digitalsysteme. Doch wie kann man sich nur mit an und aus Zahlen merken oder gar damit rechnen?

Links zum Thema

Bit

Binär

 

Byte

Serie

Credits

BitBastics // BitBastelei
IT-Grundlagen
Florian „adlerweb“ Knodt · http://biba.adlerweb.info/ · CC-BY

Intro-Musik (verändert): Take a Chance Kevin MacLeod (incompetech.com) · Licensed under
Creative Commons: By Attribution 3.0 License http://creativecommons.org/licenses/by/3.0/

Die-Fotografie: Pauli Rautakorpi · CC BY 3.0 (http://creativecommons.org/licenses/by/3.0)
via https://commons.wikimedia.org/wiki/File:Intel_Pentium_P54C_die.jpg

 

PHP: Binärdaten als Float interpretieren

Aktuell arbeite ich daran Binärdaten einer Steuerung für ein Logging-System zu übersetzen. Die Daten werden – mit verschiedenen Formaten – per TCP angeliefert und kommen in etwas ungewöhnlichen Formaten (MSB/LSB, Füllbits, etc) herein. Die erste Aufgabe meines Scriptes besteht entsprechend darin die Daten in Binärform aufzubereiten. Das meiste sind ASCII-Werte, welche per chr() schnell übersetzt sind. Auch das Zusammensetzen von vorzeichenlosen Integern ist mit etwas Shiften kein Problem.

Gegen die Wand lief ich dann allerdings bei Kommawerten. Zwar nutzt sowohl die Steuerung als auch PHP Gleitkommazahlen nach IEEE754, allerdings lässt sich PHP mit dem üblichen Type-juggling/casting nicht dazu überreden die Binärdaten als Float zu interpretieren. Die Lösung fand sich (wie üblich) auf Stackoverflow: pack/unpack.

$input = 0xbf9e0419;
var_dump(unpack('f', pack('i', $input)));

Und schon weiß auch PHP, dass 0xbf9e0419 eine -1.2345 ist. Commence logging.