# <?php 进制转换 十六进制中, 每两个为一个byte, 如4字节表示`00 00 00 FF` ## 二进制与十进制 ```php >>> decbin(11) // 十进制到二进制 1011 >>> bindec(1011) // 二进制到十进制 11 ``` ## 十进制与八进制 ```php >>> octdec(156) // 八进制到十进制 int(110) >>> decoct(110) // 十进制到八进制 string(3) "156" ``` ## 十进制与十六进制 ```php >>> dechex(156778) // 十进制到十六进制 string(5) "2646a" >>> hexdec('2646a') // 十六进制到十进制 int(156778) ``` ## ASCII与十六进制 ```php >>> bin2hex('php是世界上最...') // ASCII到十六进制 string(42) "706870e698afe4b896e7958ce4b88ae69c802e2e2e" >>> hex2bin('706870e698afe4b896e7958ce4b88ae69c802e2e2e') // 十六进制还原ASCII字符串 string(21) "php是世界上最..." ``` ## 小总结 - 二进制 `bin` - 八进制 `oct` - 十进制 `dec` - 十六进制 `hex` 单词搭配就是相应的转换方法~ ## 任意进制转换 > string base_convert(string $number, int $frombase, int $tobase) ```php >>> base_convert(120, 10, 2) // 十进制到二进制 string(7) "1111000" ``` - $number 欲转换的数值 - $frombase 转换前进制, 2-36之间整数 - $tobase 转换后进制, 2-36之间整数 **注意事项: 由于使用内部的 "double" 或 "float" 类型,base_convert()的操作可能会导致大数值中的精度丢失** ## pack & unpack 用法 参考优秀文章: - [PHP中pack、unpack的详细用法](https://segmentfault.com/a/1190000008305573)