2009-11-14 8 views

Odpowiedz

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

decbin(int $number): Zwraca ciąg zawierający binarną reprezentację danej liczby argumentów.

bindec(string $bstring): Zwraca dziesiętny odpowiednik liczby binarnej w argumencie bstring.

+0

To odpowiada na niewłaściwe pytanie ... przyznane, pytanie nie było dobrze napisane, ale odnosi się do typu "binarnego ciągu" używanego w składni 'b'xxxx'' w PHP, a nie do liczby binarnej reprezentowanej jako ciąg tekstowy. –

15

PHP language reference opisuje rozróżnienie między ciągi Unicode i rodzimych ciągów binarnych, oznaczoną b'this jest ciąg binarny”

To nie wydaje się być metoda przedstawiania liczb binarnych.

Zapis „jest dostępna od PHP 5.2.1, jednak będzie to miało efekt tylko od PHP 6.0.0”

+0

Źródło twojej odpowiedzi jest w rzeczywistości komentarzem użytkownika w dokumentacji PHP: http://php.net/manual/fr/language.types.string.php#93576 To nie jest zbyt wiarygodne. –

+0

Oto bardziej wiarygodna dokumentacja: https://web.archive.org/web/20090403051843/http://us2.php.net/manual/en/function.is-binary.php –

3

„binarny ciąg” jest to, co mamy teraz w php - ciąg bajtów , które (w przeciwieństwie do języka C) może również zawierać nul-bajt. Jest to (lub będzie, jak w PHP 6) różne od ciągów unicode, które są sekwencjami znaków dwubajtowych.

8

Struny binarne zostały wprowadzone w PHP 5.2.1, ale oczekiwano, że zaczną obowiązywać dopiero począwszy od PHP 6. Była to próba rozróżnienia łańcuchów znaków Unicode i binarnych. Pierwszy z nich to nowy format ciągów, drugi to bieżący format, ale zmieniony na notację "b".

Jak wiadomo, PHP 6 zostało porzucone, a format napisów nie zmienił się. Notacja "b" to tylko relikt z tamtej epoki.

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


Więc w dzisiejszych czasach (PHP 5 i 7), ciąg binarny jest tylko format string. Kodowanie znaków (które może być wielobajtowe) jest zarządzane na "wyższym poziomie", przez twój edytor tekstu, przeglądarkę internetową itp. Możesz traktować ciąg binarny jako łańcuch składający się z pełnego zakresu wartości bajtów 0-255.

Ciąg znaków niedrukowalnych i tym podobne, można nim manipulować w PHP jak każdy inny ciąg znaków, ale spowoduje to wyświetlenie go przez śmieci. Również niektóre znaki mają specjalne znaczenie: \0 oznacza zakończenie znaków w C i SQL, są znaki kontrolne itp. Tak więc, gdy tylko użyjesz ich poza PHP, napotkasz problemy. Na przykład random_bytes() tworzy takie ciągi.

+0

Występują problemy z JSON. Ale PHP losowo zwraca mój ciąg z "b", a czasem bez. Dlatego czasami mój JSON nie jest renderowany, a czasami jest ... To doprowadza mnie do szału! Jeśli ktoś jest w tym przypadku, warto wiedzieć, że JSON nie obsługuje tego "b" – Delphine

+0

Zapraszam do opublikowania pytania w twojej sprawie. –