PHP 프로그래밍에서는 종종 여러 옵션이 활성화되어 있는지 확인해야합니다. 예를 들어, 구성 항목에는 여러 바이너리 플래그가 포함될 수 있으며 각 플래그는 함수가 활성화되는지 여부를 나타냅니다. 전통적인 판단 방식은 일반적으로 판단 할 경우 코드가 길고 비효율적입니다. 실제로 PHP의 내장 Bindec () 함수는 이러한 종류의 판단을 신속하게 실현하고 비트 컴퓨팅 기술을 결합하여 간결하고 효율적인 코드를 작성할 수 있습니다.
Bindec () 는 이진 문자열을 해당 10 진수 숫자로 변환하는 PHP 내장 기능입니다. 문자 '0'및 '1'으로 구성된 문자열을 받고 해당 소수점 값을 반환합니다.
예:
<?php
$binary = "1011";
$decimal = bindec($binary); // 11
echo $decimal;
?>
구성 문자열이 있다고 가정하고 각 숫자는 옵션이 켜져 있는지, '1'이 켜지고 '0'이 다음을 의미한다고 가정합니다.
$options = "10101"; // Indicates the1、3、5옵션이 활성화됩니다
해당 소수점 값을 얻으려면 Bindec ($ 옵션) 호출 :
<?php
$options = "10101";
$decimal = bindec($options); // 21
?>
세 번째 옵션 (오른쪽에서 왼쪽으로 계산)과 같은 특정 옵션이 활성화되어 있는지 확인하려면 비트 및 계산 만 수행하면됩니다.
<?php
$decimal = bindec("10101"); // 21
$flag = 1 << 2; // 1.3비트 마스크,~에서0계산을 시작하십시오,2代表1.3조금
$is_enabled = ($decimal & $flag) !== 0;
echo $is_enabled ? "열려 있는" : "폐쇄";
?>
모든 옵션의 상태는 이진 문자열로 표시 될 수 있습니다. 그것들을 10 진수로 변환 한 후, 그들은 약간의 마스크로 신속하게 판단 될 수 있으며, 이는 코드를 크게 단순화하고 배치 상태 판단에 적합합니다.
샘플 코드 :
<?php
// 옵션 구성 문자열,길이는 옵션 수를 나타냅니다
$options = "11011"; // Indicates the1、2、4、5옵션이 활성화됩니다
// 소수로 변환하십시오
$decimal = bindec($options);
// 감지 할 옵션 마스크를 정의하십시오,比如检测1.2和1.4个选项是否都열려 있는
$mask = (1 << 1) | (1 << 3); // 1.2和1.4조금
// 判断是否同时열려 있는
if (($decimal & $mask) === $mask) {
echo "1.2和1.4个选项均已열려 있는";
} else {
echo "1.2和1.4个选项未全部열려 있는";
}
?>
권한 관리 : 바이너리 플래그 문자열을 사용하여 사용자 권한을 나타내려면 특정 권한이 있는지 신속하게 결정하십시오.
기능 스위치 : 데이터베이스 필드 및 명확한 로직을 저장하기 위해 여러 기능 스위치를 구성합니다.
성능 장점 : 고 비트 컴퓨팅 효율성, 고성능 요구에 적합합니다.
Bindec () 와 이진 문자열을 구문 분석하기 위해 코드는 간결하고 이해하기 쉽고 유지 관리가 쉽습니다.