2.14. Converting Between Bases
Problem
You need to convert a number from one base to another.
Solution
Use the base_convert( )
function:
$hex = 'a1'; // hexadecimal number (base 16) // convert from base 16 to base 10 $decimal = base_convert($hex, 16, 10); // $decimal is now 161
Discussion
The base_convert( )
function changes a string in
one base to the correct string in another. It works for all bases
from 2 to 36 inclusive, using the letters a
through z
as additional symbols for bases above
10. The first argument is the number to be converted, followed by the
base it is in and the base you want it to become.
There are also a few specialized functions for conversions to and
from base 10 and the most commonly used other bases of 2, 8, and 16.
They’re bindec( )
and
decbin( )
, octdec( )
and
decoct( )
, and hexdec( )
and
dechex( )
:
// convert to base 10 print bindec(11011); // 27 print octdec(33); // 27 print hexdec('1b'); // 27 // convert from base 10 print decbin(27); // 11011 print decoct(27); // 33 print dechex(27); // 1b
Another alternative is to use sprintf( )
, which allows you to convert decimal
numbers to binary, octal, and hexadecimal numbers with a wide range
of formatting, such as leading 0s and a choice between upper- and
lowercase letters for hexadecimal numbers.
For instance, say you want to print out HTML color values:
printf('#%02X%02X%02X', 0, 102, 204); // #0066CC
See Also
Documentation on base_convert( )
at
http://www.php.net/base-convert and
sprintf( )
formatting ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.