十六进制字符串增量

时间:2016-02-29 14:18:38

标签: php type-conversion

这可能是一个简单的两行代码,但我花了最后两个小时搜索,并尝试在那里徒劳无功。

使用PHP 5.6,我想增加从数据库中获取的字符串的值。字符串包含一个十六进制数字,例如ffffffff000000000001586f我想将其递增以获得ffffffff0000000000015870

我试图将我的字符串转换为hexdecdechexString2hex ...但我总是得到错误的结果

1 个答案:

答案 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));

https://3v4l.org/fXneg