The base_convert() function is used to convert numbers between different numeral systems. It allows you to convert a number from one base (like binary, decimal, etc.) to another. The syntax is as follows:
<span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$frombase</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$tobase</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$number: The number to be converted, passed as a string.
$frombase: The current base of the number, ranging from 2 to 36.
$tobase: The base to convert to, also ranging from 2 to 36.
Returns the converted number as a string. If the input is invalid or parameters are incorrect, it returns false.
The base_convert() function supports bases from 2 to 36. This means you can convert between the following systems:
Binary (Base 2): Consists of 0 and 1, commonly used in computing.
Octal (Base 8): Uses digits 0 through 7.
Decimal (Base 10): The number system we use daily, consisting of digits 0 through 9.
Hexadecimal (Base 16): Includes digits 0 to 9 and letters A to F, widely used in computing, especially for memory addresses.
Higher Bases (Base 17 to Base 36): These go beyond commonly used systems but can be useful in specialized applications.
For example, alphabetic characters in higher bases (from hexadecimal onward) are represented by A through Z, where A = 10, B = 11, ..., Z = 35.
Suppose you have a binary number 1011 and want to convert it to decimal:
<span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-string">"1011"</span></span><span>;
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$binary</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decimal</span></span><span>; </span><span><span class="hljs-comment">// Output: 11</span></span><span>
</span></span>
In this example, the binary number 1011 is converted to decimal 11.
You may need to convert a decimal number to hexadecimal. For example, converting 255 to hexadecimal:
<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-string">"255"</span></span><span>;
</span><span><span class="hljs-variable">$hexadecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hexadecimal</span></span><span>; </span><span><span class="hljs-comment">// Output: FF</span></span><span>
</span></span>
Here, decimal 255 is converted to hexadecimal FF.
You can convert a hexadecimal number to octal. For example, converting 1F (hex) to octal:
<span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">"1F"</span></span><span>;
</span><span><span class="hljs-variable">$octal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$octal</span></span><span>; </span><span><span class="hljs-comment">// Output: 37</span></span><span>
</span></span>
Hexadecimal 1F is converted to octal 37.
PHP's base_convert() also supports bases beyond hexadecimal. For example, convert decimal 100 to Base 35:
<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-string">"100"</span></span><span>;
</span><span><span class="hljs-variable">$base35</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">35</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$base35</span></span><span>; </span><span><span class="hljs-comment">// Output: 2S</span></span><span>
</span></span>
In Base 35, the decimal number 100 is represented as 2S.
Range Limitation: The base_convert() function only supports bases between 2 and 36. Values outside this range will cause an error.
Parameter Type: The $number parameter must be a string. Even if you're working with numeric input, it needs to be cast to a string.
Case Insensitivity: PHP treats letters in a case-insensitive manner during base conversion. For example, base_convert("10", 10, 16) will return the same result whether the input uses uppercase or lowercase. The output will be in uppercase, and lowercase inputs are automatically converted.