PHP进制转换函数详解:十进制、二进制、八进制与十六进制互转
本文将梳理PHP中核心进制转换函数,涵盖十进制、二进制、八进制及十六进制之间的相互转换。通过解析 decbin、decoct、dechex、bindec、hexdec 及 base_convert 等函数的用法、参数及限制条件,帮助开发者在实际编程中高效处理数据格式转换。
十进制与其他进制转换
在处理数字表示时,常需要将十进制数转换为其他进制。PHP 提供了专用函数来实现这一需求,这些函数均接受整数作为输入,并返回字符串形式的结果。
第1步:十进制转二进制使用 decbin()
目的:将十进制整数转换为二进制字符串表示。
入口:直接使用 decbin() 函数。
动作:调用 echo decbin(12); 输出 1100,或 echo decbin(26); 输出 11010。
重要参数:函数签名 string decbin ( int number )。
完成状态:返回包含给定数字二进制表示的字符串。注意,该函数能转换的最大十进制数值为 4294967295(即 32 位全 1)。
第2步:十进制转八进制使用 decoct()
目的:将十进制整数转换为八进制字符串。
入口:使用 decoct() 函数。
动作:执行 echo decoct(15); 得到 17,echo decoct(264); 得到 410。
重要参数:函数签名 string decoct ( int number )。
完成状态:返回八进制表示字符串。最大可转换值为十进制 4294967295,对应结果为 "37777777777"。
第3步:十进制转十六进制使用 dechex()
目的:将十进制整数转换为小写十六进制字符串。
入口:使用 dechex() 函数。
动作:运行 echo dechex(10); 输出 a,echo dechex(47); 输出 2f。
重要参数:函数签名 string dechex ( int number )。
完成状态:返回十六进制字符串。最大可转换值同为十进制 4294967295,结果为 "ffffffff"。
其他进制转十进制
当需要从非十进制字符串还原为数值时,可使用对应的转换函数。这些函数通常接受字符串类型参数。
第1步:二进制转十进制使用 bindec()
目的:将二进制字符串转换为十进制数值。
入口:使用 bindec() 函数。
动作:echo bindec('110011'); 输出 51;前导零不影响结果,bindec('000110011') 同样输出 51。
重要参数:函数签名 number bindec ( string binary_string )。
完成状态:返回十进制整数值(或 float)。可转换最大数为 31 位二进制数(十进制 2147483647)。自 PHP 4.1.0 起,支持大数值,超出范围时返回 float 类型。
第2步:八进制转十进制使用 octdec()
目的:将八进制字符串转换为十进制数值。
入口:使用 octdec() 函数。
动作:echo octdec('77'); 输出 63;可组合使用 echo octdec(decoct(45)); 验证一致性,输出 45。
重要参数:函数签名 number octdec ( string octal_string )。
完成状态:返回十进制数值。最大可转换值为 17777777777(八进制),即十进制 2147483647。超过此范围时,同 bindec 一样,PHP 4.1.0+ 会返回 float 类型。
第3步:十六进制转十进制使用 hexdec()
目的:将十六进制字符串转换为十进制数值。
入口:使用 hexdec() 函数。
动作:var_dump(hexdec("See")); 和 var_dump(hexdec("ee")); 均输出 int(238);hexdec("that") 忽略无效字符 't', 'h',仅计算 'a',输出 int(10)。
重要参数:函数签名 number hexdec ( string hex_string )。
完成状态:返回十进制数值。函数会自动将遇到的非十六进制字符替换为 0(左侧零被忽略,右侧零计入)。最大转换值为十进制 2147483647,超限后返回 float。
二进制数据与十六进制互转
在处理原始二进制数据流时,常需将其转为可读的十六进制字符串,反之亦然。
第1步:二进制数据转十六进制字符串使用 bin2hex()
目的:将二进制字符串转换为 ASCII 十六进制表示。
入口:使用 bin2hex() 函数。
动作:虽然该函数直接操作字节串,但若仅处理纯二进制数字串,可结合 dechex(bindec($binary)) 思路理解。直接对二进制串 $binary = "11111001"; 使用逻辑:$hex = dechex(bindec($binary)); 输出 f9。
注意:原生 bin2hex(str) 是将字节数组转 hex 字符串,若输入是二进制数字符串,需先 bindec 再 dechex 或直接使用 bin2hex 处理原始字节。
重要参数:函数签名 string bin2hex ( string str )。
完成状态:返回 ASCII 十六进制字符串,采用高四位字节优先的方式转换。
任意进制通用转换
对于更灵活的进制间转换,PHP 提供了通用的转换函数。
第1步:任意进制间转换使用 base_convert()
目的:在任意基数(2 到 36)之间转换数字字符串。
入口:使用 base_convert() 函数。
动作:将十六进制 $hexadecimal = 'A37334'; 转为二进制:echo base_convert($hexadecimal, 16, 2);,输出 101000110111001100110100。
重要参数:函数签名 string base_convert ( string number, int frombase, int tobase )。
其中 frombase 和 tobase 必须在 2 到 36 之间。高于十进制的数字用字母 a-z 表示(a=10, ..., z=35)。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













