php에서, bindec () 함수는 이진 문자열을 10 진수로 변환하는 데 사용됩니다. 사용이 매우 간단 해 보이지만 많은 개발자들은 일관되지 않은 전환 결과 및 실제 운영에 대한 기대와 같은 문제를 겪게됩니다. 이 기사는이 문제의 원인을 예제로 자세히 분석하고 솔루션을 제공합니다.
bindec () 함수는 이진 형식의 문자열 매개 변수를 수신하고 해당 소수 정수를 반환합니다. 예를 들어:
<코드> <? php $ binary = "1101"; // 바이너리 문자열 $ $ decimal = bindec ($ binary); echo $ decimal; // 출력 : 13?> </code>위의 코드에서 1101 바이너리에 해당하는 소수점은 13 이고 함수는 올바르게 반환됩니다.
bindec ()는 '0'과 '1'만 인식합니다. 문자열에 공백, 최신 또는 기타 문자가 포함 된 경우 결과는 비정상적입니다.
<코드> <? php $ binary = "1010 11"; // Space Echo Bindec ($ binary) 포함; // 출력 결과는 기대치를 충족하지 않습니까?> </code>솔루션 : 입력 문자열은 '0' 과 '1' 만으로 구성되며 일반 또는 문자열로 필터링 할 수 있는지 확인하십시오.
웹 페이지 또는 기타 소스에서 복사 된 이진 문자열에는 라인 브레이크 또는 캐리지 리턴 \ r 과 같은 보이지 않는 문자가있을 수 있습니다.
<코드> <? php $ binary = "101011 \ n"; Echo bindec (trim ($ binary)); // 트림을 사용하여 시작 및 엔드 공백 문자를 제거하여 오류를 피하기 위해?> </code>bindec ()는 PHP 정수 유형을 반환하고 일부 환경에서 최대 정수가 제한되어 있습니다 (32 비트 또는 64 비트). 이진 번호가 매우 큰 경우 결과는 오버플로 또는 플로팅 포인트 수로 변환되어 부정확성을 초래할 수 있습니다.
예를 들어:
<코드> <? php $ binary = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111는지까지는" 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정해결책:
<코드> <? php $ binary = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111는지까지는" 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111음 추출 추정들어오는 매개 변수가 문자열 유형인지 확인하십시오. 숫자 유형이 전달되면 PHP는 자동으로 변환하여 선행 0을 잃을 수있어 예상과 다른 결과를 초래할 수 있습니다.
<코드> <? php $ binary = 0101; // 이진 문자열이 아닌 Octal Number 5 ($ binary); // 잘못된 결과?> </code>올바른 글쓰기 :
<코드> <? php $ binary = "0101"; // 문자열 양식 echo bindec ($ binary); // 출력 5?> </code>bindec ()를 사용하는 경우 입력이 순수한 바이너리 스트링이고 추가 문자가 없는지 확인해야합니다.
매우 큰 이진수의 경우 GMP 또는 BCMATH 라이브러리를 사용해야합니다.
매개 변수가 자동 숫자 변환으로 인한 오류를 피하기 위해 문자열인지 확인하십시오.
Trim () 및 일반 표현식을 사용하여 입력 문자열을 청소하여 올바른 형식을 보장합니다.
이러한 세부 사항을 이해 한 후에는 Bindec () 로 바이너리 스트링을 변환 할 때 결과는 예상치 못한 것 "의 문제를 피할 수 있습니다.