多进制加法

多进制加法,实际项目中有使用到,mark一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function hex_add($a, $b)
{
$result = '';
$chars = '0123456789abcdef';
$len_a = strlen($a);
$len_b = strlen($b);

if ($len_a > $len_b) {
$max = $len_a;
$b = str_pad($b, $len_a, '0', STR_PAD_LEFT);
} else {
$max = $len_b;
$a = str_pad($a, $len_b, '0', STR_PAD_LEFT);
}

$inc = $pos = 0;
for ($i = $max - 1; $i >= 0; $i--) {
$pos = hexdec($a[$i]) + hexdec($b[$i]) + $inc;
$inc = floor($pos / 16);
$result = $chars[$pos % 16] . $result;
}
if ($inc) {
return $inc . $result;
}
return $result;
}