PHP进制算法、十六进制、N进制、算法原理

mac2024-01-31  64

原理

字符:0123456789ABCDEF除16取余数得最低1位,然后把商继续除得第2位,直到商等于065036 除 16,余数 12(C),商 40644064 除 16,余数 0(0),商 254254 除 16,余数 14(E),商 1515 除16,余数 15(F),商 0,结束得16进制为 FE0C

代码

<?php function L($str) { echo "\n{$str}"; } /** * N 进制算法 编码 十进制转 N进制 */ function encode($num, $bas = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") { $len = strlen($bas); $str = ""; do { $remainder = $num / $len; // 商数 $quotient = $num % $len; // 余数 $char = $bas[intval($quotient)]; // 字符位置 $str = $char . $str; $num = $remainder; } while($num >= 1); return $str; } /** * N 进制算法 解码 N进制转 十进制 */ function decode($str, $bas = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") { $len = strlen($bas); $str = strrev($str); $num = 0; for ($i = 0; $i < strlen($str); $i++) { $pos = strpos($bas, $str[$i]); $num = $num + (pow($len, $i) * $pos); } return $num; } $a = 6; $a += 100000; L("[数字] " . $a); L("[结果] " . encode($a)); // $base = "0123456789ABCDEF"; // echo $base[11]; 下面是输出 [数字] 100006 [结果] 255Y
最新回复(0)