저는 약간 혼란 스럽습니다. 두 개의 32 비트 정수, 가장 중요한 비트 중 하나가 & 다른 하나는 최소입니다. PHP에서이 둘의 십진수를 어떻게 찾을 수 있습니까?PHP에서 최상위 비트와 최하위 비트의 십진수를 계산하십시오.
업데이트 : 나는 @bwoebi에서 제안을 시도하고 약간 수정했습니다. 여기 코드는 다음과 같습니다
$value=get64($msb, $lsb);
function get64($msb, $lsb) {
$count = count($lsb);
for($i=0; $i < $count; $i++) {
$value[$i] = bcadd(bcmul($msb[$i], bcpow(2, 32)), $lsb[$i] > 0?$lsb[$i]:bcadd(bcsub(bcpow(2, 32), $lsb[$i]), 2 << 30)); // $a most significant bits, $b least significant bits
}
}
출력 :
msb=Array ([0] => INTEGER: 0 [1] => INTEGER: 0)
lsb=Array ([0] => INTEGER: 143 [1] => INTEGER: 0)
value=Array ([0] => 2147483648 [1] => 2147483648)
출력이 제대로 보이지 않습니다는 ... 내가 값으로 143을 예상했을 것 [0]. 어떤 입력?
그래서 저는 여러분이 32 비트 PHP를 실행하고 있다고 생각합니다. 64 비트 PHP를 사용하고 있다면이 방법이 더 쉬울 것입니다. 서명 된 또는 서명되지 않은 정수는 없지만? –
@MarkBaker PHP는 정수 만 서명했습니다 ... – bwoebi
@bwoebi - OP의 정수가 부호가없는 경우에 차이가있는 이유는 무엇입니까? –