PHP将64位可打印数字转换为8字节二进制字符串?

时间:2014-12-18 01:52:19

标签: php

给定8个字节的以下函数将它们转换为一个64位可打印数字:

function extract($raw_db_data)
{
    $bc_val = "0";
    for ($j = 7; $j >= 0; --$j) {
        $byte_val = ord(substr($raw_db_data, $j, 1));
        $bc_val = bcadd(bcmul("$bc_val", "256", 0), "$byte_val", 0);
    }
    return $bc_val;
}

我正在尝试实现上述函数的反向,因此给定一个可打印的64位数字,它应该生成一个8字节的二进制字符串。

我尝试了PHP的软件包,但它无法在64位数字的32位系统上运行。

1 个答案:

答案 0 :(得分:1)

正如评论中提到的@zerkms,您希望执行逆操作。

function unextract($bc_val)
{
    $bytes = '';
    while ($bc_val) {
        $bytes .= chr(bcmod($bc_val, "256"));
        $bc_val = bcdiv($bc_val, "256");
    }
    return $bytes;
}