二进制,十进制,十六进制之间的转换
bindec 二进制转十进制
decbin 十进制转二进制
hexdec 十六进制转十进制
dechec 十进制转十六进制
二进制转十六进制
dechex(bindec("1110")) // e
十六进制转二进制
decbin(hexdec("f")) // 1111
base_convert(string $number, int $frombase, int $tobase) 任意进制之间的转换
base_convert("11111111", 2, 16); // ff
有一个极度误解的函数
bin2hex(string $str ): string
函数把包含数据的二进制字符串转换为十六进制值
它会将传入的参数转换成字符串,然后将逐个字符的ASCII码转换成十六进制。
$a = 0b1111;
$b = "ab";
$c = 10;
$d = "1110";
echo bin2hex($a), PHP_EOL;
echo bin2hex($b), PHP_EOL;
echo bin2hex($c), PHP_EOL;
echo bin2hex($d), PHP_EOL;
所以说 bin2hex 根本就不是二进制转十六进制。
二进制的每四位构成的最大值为15,正好是一个十六进制的最大值F,所以说一个字节会变成两个十六进制的字符,对应的是两个字节,占用空间扩大一倍。另外十六进制的A-F也不区分大小写。十六进制的作用是方便人来阅读和展示,比十进制更直观。
计算机在展示二进制数据到屏幕的时候可读性很差,会有很多不可见的字符和乱码,因此,很多场合都会转换成十六进制,比如md5,base64。
|