The PHP’s core offers some function to convert data between binary, decimal, hexadecimal and etc. But how to convert from binary to text, we offer some function to do that.
Method 1: using functions pack and base_convert
function binToStr($input) { if (!is_string($input)) return false; return pack('H*', base_convert($input, 2, 16)); }
Example:
echo binToStr('1110100011101010111010001101111'); //tuto
But with the long binary data, we can’t convert
echo binToStr('0111010001110101011101000110111101110010011010010110000101101100011100110111000001101111011101000111001100101110011000110110111101101101'); //tutori`
Because of the function base_convert can’t work with the big number. The limitation is:
echo(PHP_INT_MAX);//2147483647
What’s the sulution? we can split the binary into chunks, convert each chunk to string and join them. We must change the above function:
function binToStr($input) { if (!is_string($input)) return false; $chunks = str_split($input,8); $ret = ''; foreach ($chunks as $chunk) { $temp = base_convert($chunk, 2, 16); $ret .= pack('H*',str_repeat("0", 2 - strlen($temp)) . $temp); } return $ret; }
Example:
echo binToStr('0111010001110101011101000110111101110010011010010110000101101100011100110111000001101111011101000111001100101110011000110110111101101101'); //tutorialspots.com
Method 2: use function bindec and chr to convert
function binToStr($input) { if (!is_string($input)) return false; $chunks = str_split($input,8); $ret = ''; foreach ($chunks as $chunk) { $ret .= chr(bindec($chunk)); } return $ret; }
Example:
echo binToStr('01110000011010000111000001110100011101010111010001110011'); //phptuts
Read more: PHP: convert string to binary
Recent search terms:
- php binary as text