这可能是一个简单的两行代码,但我花了最后两个小时搜索,并尝试在那里徒劳无功。
使用PHP 5.6,我想增加从数据库中获取的字符串的值。字符串包含一个十六进制数字,例如ffffffff000000000001586f
我想将其递增以获得ffffffff0000000000015870
我试图将我的字符串转换为hexdec
和dechex
,String2hex
...但我总是得到错误的结果
答案 0 :(得分:1)
使用http://php.net/manual/en/ref.bc.php#99130
中的函数<?php
function bchexdec($hex) {
if(strlen($hex) == 1) {
return hexdec($hex);
} else {
$remain = substr($hex, 0, -1);
$last = substr($hex, -1);
return bcadd(bcmul(16, bchexdec($remain)), hexdec($last));
}
}
function bcdechex($dec) {
$last = bcmod($dec, 16);
$remain = bcdiv(bcsub($dec, $last), 16);
if($remain == 0) {
return dechex($last);
} else {
return bcdechex($remain).dechex($last);
}
}
echo bcdechex(bcadd(bchexdec('ffffffff000000000001586f'), 1));