현재 위치: > 최신 기사 목록> Bindec 함수 구문 분석 : "0B"가있는 이진 문자열의 접두사가 영향을 미칩니 까?

Bindec 함수 구문 분석 : "0B"가있는 이진 문자열의 접두사가 영향을 미칩니 까?

M66 2025-06-12

PHP에서, Bindec 함수는 이진 문자열을 10 진수 값으로 변환하는 데 사용되는 일반적인 함수입니다. 기본 사용량은 매우 간단합니다.

 <?php
$binaryString = "1010";
$decimal = bindec($binaryString);
echo $decimal; // 산출 10
?>

그러나 때때로 우리는 "0B1010"과 같은 " 0B" 로 접두사가있는 이진 숫자 문자열을 볼 수 있습니다. 그렇다면 BINTEC 함수가 그러한 접두사가 접두사가 발생하면 어떻게됩니까? 이 기사는 이것을 자세히 분석합니다.


Bindec 기능이 작동하는 방법

공식 문서에 따르면, Bindec 함수는 문자열의 왼쪽에서 오른쪽으로 모든 바이너리 비트 ( '0'또는 '1')를 첫 번째 비 이진 문자가 발생할 때까지 모든 바이너리 비트 ( '0'또는 '1')를 구문 분석 한 다음 읽기 부품을 10 진수 정수로 변환합니다.

요컨대, Bindec은 문자열의 유효한 이진 문자에만 초점을 맞추고 다른 문자로 인해 구문 분석이 일찍 끝납니다.


"0B" 로 접두사 된 이진 문자열의 경우

샘플 코드를 통해이를 확인할 수 있습니다.

 <?php
echo bindec("1010") . "\n";     // 산출 10
echo bindec("0b1010") . "\n";   // 산출 0
echo bindec("b1010") . "\n";    // 산출 0
echo bindec("01010") . "\n";    // 산출 10
?>

결과에서 다음을 볼 수 있습니다.

  • "1010" 은 정상적으로 10으로 해결됩니다.

  • "0B1010" 은 법적 바이너리 인 구문 분석 중에 첫 번째 문자 '0'을 만나기 때문에 0을 반환하고, 문자 'b'는 법적 이진 번호가 아니므로 구문 분석이 중지되고 '0' 만 구문 분석됩니다.

  • "B1010"은 첫 번째 문자 'b'가 이진 번호가 아니고 구문 분석이 실패하기 때문에 0을 직접 반환합니다.

  • "01010" 은 10의 결과를 가진 유효한 바이너리 스트링입니다.

이것은 Bindec이 "0b" 접두사를 갖는 이진 스트링을 지원하지 않으며 , 접두사에서 유효한 이진 부품 만 구문 분석하고 이진이 아닌 문자가 발생하면 구문 분석을 종료합니다.


"0B" 로 접두사를 가진 이진 문자열을 다루는 방법?

"0B" 접두사로 바이너리 스트링을 구문 분석 해야하는 경우 먼저이 접두사를 제거한 다음 Bindec을 호출 할 수 있습니다.

샘플 코드 :

 <?php
function bindec_with_prefix(string $binaryStr): int {
    // 문자열이있는 경우 '0b' 또는 '0B' 시작,접두사를 제거하십시오
    if (stripos($binaryStr, '0b') === 0) {
        $binaryStr = substr($binaryStr, 2);
    }
    return bindec($binaryStr);
}

echo bindec_with_prefix("0b1010"); // 산출 10
echo "\n";
echo bindec_with_prefix("1010");   // 산출 10
?>

이 처리 후, 문자열이 "0b" 로 접두사인지 여부에 관계없이 소수점 숫자로 올바르게 변환 할 수 있습니다.


요약

  • PHP의 Bindec 함수는 순수한 이진 문자열 ( '0'및 '1'으로 구성) 만 허용하며, 이진이 아닌 문자를 만날 때 구문 분석을 중지합니다.

  • 이진 문자열에서 "0b" 로 접두사를 사용하면 Bindec이 'b' 문자로 정지되므로 Bindec이 오류 결과 (일반적으로 0)를 반환합니다.

  • "0B" 접두사로 문자열을 구문 분석하려면 먼저 접두사를 제거한 다음 Bindec을 호출해야합니다.

이 점을 이해하면 "0B" 접두사로 문자열을 전달하는 것을 피할 수 있습니다. 이는 많은 불필요한 오류와 디버깅 시간을 피할 수 있습니다.