2013-05-16 4 views
0

이진수를 16 진수 문자열로 변환해야합니다. 이 코드는 잘 작동 :PHP에서 이진수를 16 진수로 변환하는 경우

<? 
$binary = "1111111111111111111111101000011111111111111111110000001000100100"; 
$hex = dechex(bindec($binary)); 
echo $hex; 
?> 

을 그러나, 나는 이진 문자열 (또는 그 이상)을 하나 개의 여분의 비트를 추가하는 경우, 결과는 0

<? 
$binary = "11111111111111111111111101000011111111111111111110000001000100100"; 
$hex = dechex(bindec($binary)); 
echo $hex; 
?> 

에서 돌아 오면 내가 분리 할 수 ​​있습니다 생각 이진 문자열을 청크로 만든 다음 마지막에 16 진수 값을 결합합니다. 그러나 더 쉬운 방법이 있습니까?

답변

0

귀하의 함수는 숫자를 int로 변환하여 32 비트 제한을 초과합니다. BCMath는 한 번에 한 비트 씩 계산하고 문자열에 포함 된 숫자를 사용하므로 수천 자릿수를 곱할 수 있습니다.

불행히도 숫자 기반을 변경하기위한 고유 BCMath 함수는 없지만 이렇게하려면 the needed function을 사용하면됩니다. 링크를 확인하십시오.

관련 문제