base_convert / bindec / decbin / dechex / hexdec în PHP

Transformă un număr dintr-o bază de numerație în alta: zecimal, binar, hexazecimal sau orice bază între 2 și 36.

Sintaxă
base_convert(string $num, int $from_base, int $to_base): string

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 mesaj Deprecated. Scoate întâi # cu ltrim.
  • Folosești base_convert pentru numere foarte mari. Funcția pierde precizia peste limitele unui float.

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.