bindec
(PHP 4, PHP 5, PHP 7)
bindec — Umwandlung von binär zu dezimal
Beschreibung
Gibt die dezimale Entsprechung der binären Zahl aus dem
binary_string
-Parameter zurück.
bindec() konvertiert eine binäre Zahl in einen integer oder, falls aus Größengründen benötigt, in einen float.
bindec() interpretiert alle
binary_string
Werte als vorzeichenlose Ganzzahlen.
Dies ist so, weil bindec() das höchstwertige Bit als
weitere Größenordnung anstatt als Vorzeichenbit ansieht.
Parameter-Liste
-
binary_string
-
Der zu konvertierende Binärstring
Der Parameter muss eine Zeichenkette sein. Andere Datentypen ergeben unerwartete Ergebnisse.
Beispiele
Beispiel #1 bindec()-Beispiel
<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";
echo bindec('111');
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
51 51 7
Beispiel #2 bindec() interpretiert die Eingabe als vorzeichenlose Ganzzahlen
<?php
/*
* Der Lehrwert dieses Beispiels liegt in der Ausgabe,
* und nicht im PHP-Code selbst.
*/
$magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2);
p($magnitude_lower - 1);
p($magnitude_lower, 'Beachte den Überlauf, auch in den folgenden Fällen!');
p(PHP_INT_MAX, 'PHP_INT_MAX');
p(~PHP_INT_MAX, 'interpretiert als eins mehr als PHP_INT_MAX');
if (PHP_INT_SIZE == 4) {
$note = 'interpretiert als größte vorzeichenlose Ganzzahl';
} else {
$note = 'interpretiert als größte vorzeichenlose Ganzzahl (18446744073709551615),
aber ungenau aufgrund mangelnder Fließkommagenauigkeit';
}
p(-1, $note);
function p($input, $note = '') {
echo "Eingabe: $input\n";
$format = '%0' . (PHP_INT_SIZE * 8) . 'b';
$bin = sprintf($format, $input);
echo "Binär: $bin\n";
ini_set('precision', 20); // zur Lesbarkeit auf 64 bit Systemen
$dec = bindec($bin);
echo 'bindec(): ' . $dec . "\n";
if ($note) {
echo "HINWEIS: $note\n";
}
echo "\n";
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe aus 32-Bit-Systemen:
Eingabe: 1073741823 Binär: 00111111111111111111111111111111 bindec(): 1073741823 Eingabe: 1073741824 Binär: 01000000000000000000000000000000 bindec(): 1073741824 HINWEIS: Beachte den Überlauf, auch in den folgenden Fällen! Eingabe: 2147483647 Binär: 01111111111111111111111111111111 bindec(): 2147483647 HINWEIS: PHP_INT_MAX Eingabe: -2147483648 Binär: 10000000000000000000000000000000 bindec(): 2147483648 HINWEIS: interpretiert als eins mehr als PHP_INT_MAX Eingabe: -1 Binär: 11111111111111111111111111111111 bindec(): 4294967295 HINWEIS: interpretiert als größte vorzeichenlose Ganzzahl
Das oben gezeigte Beispiel erzeugt folgende Ausgabe aus 64-Bit-Systemen:
Eingabe: 4611686018427387903 Binär: 0011111111111111111111111111111111111111111111111111111111111111 bindec(): 4611686018427387903 Eingabe: 4611686018427387904 Binär: 0100000000000000000000000000000000000000000000000000000000000000 bindec(): 4611686018427387904 HINWEIS: Beachte den Überlauf, auch in den folgenden Fällen! Eingabe: 9223372036854775807 Binär: 0111111111111111111111111111111111111111111111111111111111111111 bindec(): 9223372036854775807 HINWEIS: PHP_INT_MAX Eingabe: -9223372036854775808 Binär: 1000000000000000000000000000000000000000000000000000000000000000 bindec(): 9223372036854775808 HINWEIS: interpretiert als eins mehr als PHP_INT_MAX Eingabe: -1 Binär: 1111111111111111111111111111111111111111111111111111111111111111 bindec(): 18446744073709551616 HINWEIS: interpreted to be the largest unsigned integer (18446744073709551615), aber ungenau aufgrund mangelnder Fließkommagenauigkeit
Anmerkungen
Hinweis:
Die Funktion kann Zahlen konvertieren, die für den integer-Typ der Plattform zu groß sind; größere Werte werden dann als float zurückgegeben.
Siehe auch
- decbin() - Dezimal zu Binär Konvertierung
- octdec() - Oktal zu Dezimal Umwandlung
- hexdec() - Hexadezimal zu Dezimal Umwandlung
- base_convert() - Konvertiert einen numerischen Wert zwischen verschiedenen Zahlensystemen
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-bindec.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.