środa,
Pozycyjne systemy liczbowe i PHP
Język PHP dostarcza funkcje umożliwiające konwersję liczb pomiędzy różnymi systemami liczbowymi. Najbardziej uniwersalna spośród nich to base_convert() dająca możliwość samodzielnego określenia źródłowej i docelowej podstawy. Przyjmuje ona trzy argumenty, pierwszy to konwertowana liczba, dwa następne to odpowiednio pierwotna i docelowa podstawa. Poniżej zamieszczono przykładowej wywołania tej funkcji. Pierwotna i docelowa podstawa muszą zawierać się w zakresie od 2 do az. Wyrażenie „az” to liczba 36 szesnastkowo, podstawy większe niż dziesięć przekazujemy do funkcji w tej formie.
<pre>
<?php
echo base_convert('F1', 16, 2) . "\n"; // 1111111100000001
echo base_convert('7', 10, 2) . "\n"; // 111
echo base_convert('9', 10, 3) . "\n"; // 100
?>
<pre>
Funkcje bindec() oraz decbin() konwertują liczby jedynie liczby binarne i dziesiętne. Kierunek konwersji określa sugestywna nazwa funkcji.
<pre>
<?php
echo decbin(7) . "\n"; // 111
echo bindec(111) . "\n"; // 7
?>
</pre>
W poniższym przykładzie wyświetlono liczby dziesiętne z przedziału 0-20 wraz z ich binarnymi odpowiednikami.
<pre>
<?php
foreach(range(0,20) as $x) {
echo $x . '|' . decbin($x) . "\n";
}
?>
</pre>
Funkcje decoct() oraz octdec() dotyczą systemów ósemkowego oraz dziesiętnego.
<pre>
<?php
echo decoct(128) . "\n"; // 200
echo octdec(200) . "\n"; // 128
?>
</pre>
Ostatnie para prezentowanych funkcji to dechex() oraz hexdec(). Zgodnie z nazwą dotyczą one konwersji systemów heksadecymalnego oraz dziesiętnego.
<pre>
<?php
echo dechex(3840) . "\n"; // f00
echo hexdec('f00') . "\n"; // 3840
?>
</pre>