2009-11-14 6 views

Antwort

-7
$number = decbin(59); 
echo $number . "\n"; //111011 
$number = bindec($number); 
echo $number . "\n"; //59 

decbin(int $number): Gibt eine Zeichenfolge, die eine binäre Darstellung der gegebenen Zahl Argument enthält.

bindec(string $bstring): Gibt das Dezimaläquivalent der Binärzahl in bstring Argument zurück.

+0

Dies beantwortet die falsche Frage ... gewährt, die Frage war nicht gut geschrieben, aber es bezieht sich auf den "binary string" -Typ, wie er in der 'b'xxxx'-Syntax in PHP verwendet wird, nicht auf eine dargestellte Binärzahl als eine Textzeichenfolge. –

15

Die PHP language reference beschreibt den Unterschied zwischen Unicode-Strings und nativen Binärketten mit b'this bezeichnet eine binäre Zeichenfolge‘

Es scheint nicht ein Verfahren zur Darstellung Binärzahlen zu sein.

Die Notation „seit PHP 5.2.1 verfügbar Es wird jedoch nur Wirkung haben, wie von PHP 6.0.0“

+0

Die Quelle Ihrer Antwort ist eigentlich ein Benutzerkommentar in der PHP-Dokumentation: http://php.net/manual/fr/language.types.string.php#93576 Dies ist nicht zu zuverlässig. –

+0

Hier ist eine autoritative Dokumentation: https://web.archive.org/web/20090403051843/http://us2.php.net/manual/en/function.is-binary.php –

3

„binary string“ ist, was wir jetzt in PHP haben - eine Folge von Bytes , die (im Gegensatz zur C-Sprache) auch kein Byte enthalten kann. Dies ist (oder wird ab php6 sein) anders als bei Unicode-Strings, die Sequenzen von Zwei-Byte-Zeichen sind.

8

Binäre Zeichenfolgen wurden in PHP 5.2.1 eingeführt, sollten aber erst ab PHP 6 wirksam werden. Es wurde versucht, zwischen Unicode- und Binärzeichenfolgen zu unterscheiden. Das erste ist das neue String-Format, wobei das letztere das aktuelle Format ist, aber in die "b" -Notation geändert wurde.

Wie Sie vielleicht wissen, wurde PHP 6 aufgegeben und das String-Format änderte sich nicht. Die "b" -Notation ist nur ein Relikt aus dieser Zeit.

'foobar' === b'foobar'; // true 


So heute (PHP 5 und 7), binäre Zeichenfolge ist das einzige String-Format. Die Zeichencodierung (die Multibyte sein kann) wird auf der "oberen Ebene" von Ihrem Texteditor, Webbrowser usw. verwaltet. Sie können eine Binärzeichenfolge als eine Zeichenfolge betrachten, die aus dem vollen 0-255-Bereich von Bytewerten besteht.

Eine Zeichenkette mit nicht druckbaren Zeichen und so, kann in PHP wie jede andere Zeichenkette manipuliert werden, aber es wird Müll angezeigt. Außerdem haben einige Zeichen eine besondere Bedeutung: \0 markiert die Zeichenfolgenabkürzung in C und SQL, es gibt Steuerzeichen usw. Sobald Sie sie außerhalb von PHP verwenden, werden Sie wahrscheinlich Probleme bekommen.

Zum Beispiel erzeugt random_bytes() solche Zeichenfolgen.

+0

Ich stoße auf Probleme mit JSON. Aber PHP gibt meine Zeichenfolge zufällig mit 'b' und manchmal ohne zurück. Deshalb wird mein JSON manchmal nicht gerendert und manchmal ist es ... Es macht mich verrückt! Wenn jemand in diesem Fall ist, könnte es nützlich sein zu wissen, dass JSON nicht mit diesem "b" handhabt. – Delphine

+0

Fühlen Sie sich frei, eine Frage für Ihren Fall zu stellen. –

Verwandte Themen