给定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位系统上运行。
答案 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;
}