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 비트 시스템에서 작동하지 않습니다.
@zerkms가 주석에서 언급했듯이 역 연산을 수행하려고합니다.
function unextract($bc_val)
{
$bytes = '';
while ($bc_val) {
$bytes .= chr(bcmod($bc_val, "256"));
$bc_val = bcdiv($bc_val, "256");
}
return $bytes;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다