php内置进制转换函数

来源:互联网 发布:vuex刷新页面数据丢失 编辑:程序博客网 时间:2024/05/24 02:11

最近整理了php内置的进制转换函数如下:
16进制转换为10进制函数:hexdec(str);16.1016dechex(str)

<?php$str10 = '12132121231';$strRight8 = '08' ;$strRight16 = 'zhonguoABE123' ;$str16 = '0x123' ; $strWrong2 = '0b0101010' ;var_dump(hexdec ($str10));//int(1242085593649)var_dump(hexdec ($strRight8));//int(8)var_dump(hexdec ($strRight16));//int(11264291)var_dump(hexdec ($str16));//int(291)var_dump(hexdec ($strWrong2));//int(2953842704)?>

2进制转换为10进制函数:bindec(str102decbinstr)

<?php$str10 = '12132121231';$strRight8 = '08' ;$strRight16 = 'zhonguoABE123' ;$str16 = '0x123' ; $strWrong2 = '0b0101010' ;var_dump(bindec ($str10));//int(31)var_dump(bindec ($strRight8));//int(0)var_dump(bindec ($strRight16));//int(1)var_dump(bindec ($str16));//int(1)var_dump(bindec ($strWrong2));//int(42)?>

8进制转换为10进制函数:octdec(str108decoctstr)

<?php$str10 = '12132121231';$strRight8 = '08' ;$strRight16 = 'zhonguoABE123' ;$str16 = '0x123' ; $strWrong2 = '0b0101010' ;var_dump(octdec ($str10));//int(1365811865)var_dump(octdec ($strRight8));//int(0)var_dump(octdec ($strRight16));//int(83)var_dump(octdec ($str16));//int(83)var_dump(octdec ($strWrong2));//int(33288)?>

任意进制转换函数:base_convert(参数1,参数2,参数3)
参数1要转换的数字,参数2数字本身的进制,参数3要转为的目的进制

<?php<?php$str10to2 = '12';$str10to8 = '12';$str10to16 = '12';$str8to10 = 7 ;$str8to16 = 7 ;$str8to2 = 7 ;$str16to10 = 'ABE123' ;$str16to2 = 'ABE123' ;$str16to8 = 'ABE123' ;//16进制的其他写法$strX16to10 = '0xABE123' ;$strX16to2 = '0xABE123' ;$strX16to8 = '0xABE123' ;$str2to10 = '0b0101010' ;$str2to8 = '0b0101010' ;$str2to16 = '0b0101010' ;$str4to2 = 13;$str4to8 = 13;$str4to10 = 13;$str4to16 = 13;$str4to4 = 13;$str4to5 = 13;$str4to6 = 13;$str4to7 = 13;var_dump(base_convert ($str10to2,10,2));//10->2  var_dump(base_convert ($str10to8,10,8));//10->8var_dump(base_convert ($str10to16,10,16));//10->16var_dump(base_convert ($str8to10,8,10));//8->10var_dump(base_convert ($str8to16,8,16));//8->16var_dump(base_convert ($str8to2,8,2));//8->2var_dump(base_convert ($str16to10,16,10));//16->10var_dump(base_convert ($str16to2,16,2));//16->2var_dump(base_convert ($str16to8,16,8));//16->8var_dump(base_convert ($strX16to10,16,10));//16->10var_dump(base_convert ($strX16to2,16,2));//16->2var_dump(base_convert ($strX16to8,16,8));//16->8var_dump(base_convert ($str2to10,2,10));//2->10var_dump(base_convert ($str2to8,2,8));//2->8var_dump(base_convert ($str2to16,2,16));//2->16var_dump(base_convert ($str4to2,4,2));//4->2var_dump(base_convert ($str4to8,4,8));//4->8var_dump(base_convert ($str4to10,4,10));//4->10var_dump(base_convert ($str4to16,4,16));//4->16var_dump(base_convert ($str4to4,4,4));//4->4var_dump(base_convert ($str4to5,4,5));//4->5var_dump(base_convert ($str4to6,4,6));//4->6var_dump(base_convert ($str4to7,4,7));//4->7?>//输出string(4) "1100"string(2) "14"string(1) "c"string(1) "7"string(1) "7"string(1) "111"string(8) "11264291"string(24) "101010111110000100100011"string(8) "52760443"string(8) "11264291"string(24) "101010111110000100100011"string(8) "52760443"string(2) "42"string(2) "52"string(2) "2a"string(3) "111"string(1) "7"string(1) "7"string(1) "7"string(2) "13"string(2) "12"string(2) "11"string(2) "10"

请注意进制的写法:
2进制0b并且2进制的数要用字符串形式,因为有前缀‘0b’(零b).
8进制在数字前添加0(零)作为标示,不能用字符串。在上述例子中可以见到8进制采用字符串表示时默认处理为不能识别。但是使用函数时8进制数并不能使用0作为前缀,不能识别前缀(此处尚未找到原因)。8进制数可以不使用任何前缀直接按照正常10进制数写,但是在要求指明进制类型的函数中需要指明函数类型(参见最后一个函数base_convert的8进制表示)。
16进制表示一般为‘0x’(零x)作为前缀。但是不采用0x采用前缀的写法也能识别,但是最好要采用字符串形式书写(涉及字符ABCDEF等)。

0 0
原创粉丝点击