php에서, bindec () 함수는 이진 문자열을 해당 10 진수 숫자로 변환하는 데 사용됩니다. 그 정의는 매우 간단합니다.
int|float bindec(string $binary_string)
그러나 많은 개발자들이 그것을 사용할 때 의문의 여지가 있습니다 : bindec () 함수는 정수 유형 ( int ) 또는 플로팅 포인트 유형 ( float )을 반환합니까? 이 질문에 대한 답은 완전히 직관적이지 않으며 다음은 자세한 분석입니다.
<?php
$binary = "1010"; // 이진 번호,소수점과 같습니다10
$decimal = bindec($binary);
echo $decimal; // 산출:10
echo gettype($decimal); // 산출:integer
?>
이 예에서 Bindec ()는 정수 유형을 반환합니다.
PHP의 정수 유형 ( INT )은 32 비트 시스템과 64 비트 시스템마다 다른 범위를 가지고 있습니다.
32 비트 시스템의 최대 정수는 2,147,483,647 (약 21 억)입니다.
64 비트 시스템의 최대 정수는 9,223,372,036,854,775,807 (약 9,000 억)입니다.
이진 문자열의 변환 된 값이 시스템 정수 범위를 초과하면 PHP는 자동으로 리턴 값을 플로트 로 변환합니다. 이는 PHP의 정수 유형이 크기 제한을 가지고 있기 때문에 부동 소수점 번호 유형은 더 큰 숫자 범위를 나타낼 수 있지만 정밀도를 잃을 수 있기 때문입니다.
예는 다음과 같습니다.
<?php
// 32비트 시스템은보다 큽니다2147483647的이진 번호
$binary = "11111111111111111111111111111111"; // 32개별1,동일한4294967295,초과하다32비트 정수 범위
$decimal = bindec($binary);
echo $decimal . "\n"; // 산출:4294967295
echo gettype($decimal) . "\n"; // 32位系统산출:double (PHP가운데float유형이 표시됩니다double)
?>
32 비트 시스템 에서이 값은 최대 정수 범위를 초과하므로 반환은 부동 소수점 번호입니다.
이진 번호에 해당하는 소수점 번호가 정수 범위 내에있는 경우 Bindec ()는 int 유형을 반환합니다.
값이 정수 범위를 초과하면 bindec ()가 플로트 유형을 반환합니다.
64 비트 시스템에서는 매우 큰 이진 숫자 만 반환 되는 반면 32 비트 시스템은 전환 범위가 더 적습니다.
bindec ()는 단순히 바이너리 문자열을 서명되지 않은 숫자로 변환하며 이진 문자열에는 양의 및 음수 징후의 개념이 없습니다. 서명 된 이진 번호를 처리 해야하는 경우 변환 로직을 직접 처리해야합니다.
bindec () 에 대한 자세한 지침은 PHP 매뉴얼을 방문하십시오.