Ce face base_convert / bindec / decbin / dechex / hexdec
base_convert primește numărul ca text și transformă din orice bază între 2 și 36 în alta. Cifrele mai mari decât 9 se scriu cu litere: a = 10, b = 11… z = 35.
Pentru cazurile uzuale există funcții scurte: decbin (zecimal în binar), bindec (binar în zecimal), dechex (zecimal în hexazecimal) și hexdec (hexazecimal în zecimal). Similar, decoct și octdec pentru baza 8.
Parametri
| Parametru | Descriere |
|---|---|
$num |
Numărul, ca text. |
$from_base |
Baza în care este scris numărul (2-36). |
$to_base |
Baza în care se transformă (2-36). |
Ce returnează
Numărul în noua bază, ca text cu litere mici.
Exemple
Exemplul 1: Funcțiile scurte
<?php
echo decbin(10) . "\n";
echo bindec("1010") . "\n";
echo dechex(255) . "\n";
echo hexdec("ff");
Rezultat
1010
10
ff
255
Exemplul 2: Culoare hex în RGB
<?php
$culoare = "1e90ff";
$r = hexdec(substr($culoare, 0, 2));
$g = hexdec(substr($culoare, 2, 2));
$b = hexdec(substr($culoare, 4, 2));
echo "rgb($r, $g, $b)";
Rezultat
rgb(30, 144, 255)
Exemplul 3: Orice bază cu base_convert
Baza 36 folosește toate cifrele și literele. Este folosită pentru identificatori scurți.
<?php
echo base_convert("ff", 16, 2) . "\n";
echo base_convert("123456789", 10, 36) . "\n";
echo base_convert("21i3v9", 36, 10);
Rezultat
11111111
21i3v9
123456789
Greșeli frecvente
- Lași caractere în plus, de exemplu
hexdec("#ff"). Caracterele nevalide sunt ignorate, iar din PHP 7.4 primești un mesajDeprecated. Scoate întâi#cultrim. - Folosești
base_convertpentru numere foarte mari. Funcția pierde precizia peste limitele unuifloat.
Comenzi înrudite
intval: Transformă o valoare în număr întreg.sprintf: Construiește un text formatat după un șablon și îl returnează, fără să îl afișeze.number_format: Formatează un număr cu zecimale și separator de mii, de exemplu 1.299,50.