php에서, bindec () 함수는 이진 번호 (문자열로 표시)를 소수점으로 변환하는 데 사용됩니다. 그러나 실제로 사용하면 기능이 예상대로 작동하지 않는 일부 오류 나 문제가 발생할 수 있습니다. 이러한 일반적인 오류 및 처리 팁을 이해하면 이러한 문제를 피하거나 해결하고 코드가 올바르게 작동하는지 확인하는 데 도움이됩니다.
bindec () 함수의 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$binary_string</span></span><span>);
</span></span>
$ binary_string : 이것은 이진 번호를 포함하는 문자열입니다 ( '0'및 '1'로만 구성).
반환 값은 소수 정수입니다.
예를 들어:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-string">'1101'</span></span><span>); </span><span><span class="hljs-comment">// 산출:13</span></span><span>
</span></span>
bindec ()는 0과 1으로 구성된 문자열 만 허용합니다. 문자열에 다른 문자 (예 : 공백, 문자, 기호 등)가 포함 된 경우 오류 또는 0이 반환됩니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-string">'110a'</span></span><span>); </span><span><span class="hljs-comment">// 산출:0</span></span><span>
</span></span>
전달 된 문자열에 이진 번호 만 포함되어 있는지 확인하십시오. 입력의 유효성에 대해 확실하지 않은 경우 preg_match ()를 사용하여 문자열 형식을 확인할 수 있습니다.
<span><span><span class="hljs-variable">$binary_string</span></span><span> = </span><span><span class="hljs-string">'110a'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^[01]+$/'</span></span><span>, </span><span><span class="hljs-variable">$binary_string</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"유효하지 않은 이진 문자열"</span></span><span>;
}
</span></span>
Bindec () 로 전달 된 문자열이 비어 있으면 반환 값이 0이됩니다. 실수는 아니지만 예상되는 동작이 아닐 수도 있습니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>); </span><span><span class="hljs-comment">// 산출:0</span></span><span>
</span></span>
bindec ()을 호출하기 전에 문자열이 비어 있는지 확인하십시오. 비어 있으면 기본값이 주어 지거나 오류 메시지를 트리거 할 수 있습니다.
<span><span><span class="hljs-variable">$binary_string</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"입력 문자열은 비어있을 수 없습니다"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>);
}
</span></span>
Bindec ()는 이진 문자열의 주요 0을 자동으로 무시합니다. 이것은 일반적으로 전환에 영향을 미치지 않지만 선행 제로를 정확하게 처리하려면 미리 제거 할 수 있습니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-string">'0000101'</span></span><span>); </span><span><span class="hljs-comment">// 산출:5</span></span><span>
</span></span>
선행 0을 제거하거나 디버깅 또는 처리를 위해 남겨 두도록 선택할 수 있습니다.
<span><span><span class="hljs-variable">$binary_string</span></span><span> = </span><span><span class="hljs-string">'0000101'</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ltrim</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>)); </span><span><span class="hljs-comment">// 산출:5</span></span><span>
</span></span>
이진 문자열이 매우 많은 숫자를 나타내면 Bindec () 가 올바르게 처리되지 않을 수 있습니다. PHP의 정수 유형은 가장 일반적인 값을 지원하지만 플랫폼 범위를 벗어난 값에 대해 오류 또는 오류가 발생할 수 있습니다.
<span><span><span class="hljs-variable">$large_binary</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_repeat</span></span><span>(</span><span><span class="hljs-string">'1'</span></span><span>, </span><span><span class="hljs-number">65</span></span><span>); </span><span><span class="hljs-comment">// 초과하다 64 조금</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-variable">$large_binary</span></span><span>); </span><span><span class="hljs-comment">// 오버플로를 유발할 수 있습니다</span></span><span>
</span></span>
초대형 이진 문자열의 경우 임의의 정밀 수치 처리를 지원하는 gmp_init () 및 gmp_strval () 함수를 사용하는 것을 고려할 수 있습니다.
<span><span><span class="hljs-variable">$large_binary</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_repeat</span></span><span>(</span><span><span class="hljs-string">'1'</span></span><span>, </span><span><span class="hljs-number">65</span></span><span>);
</span><span><span class="hljs-variable">$gmp_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmp_init</span></span><span>(</span><span><span class="hljs-variable">$large_binary</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gmp_strval</span></span><span>(</span><span><span class="hljs-variable">$gmp_value</span></span><span>); </span><span><span class="hljs-comment">// 많은 숫자를 올바르게 변환하십시오</span></span><span>
</span></span>
Bindec () 함수는 이진 표현 (예 : 보체 형태)에서 음수의 처리를 지원하지 않습니다. 음수를 처리 해야하는 경우 일반적으로 수동으로 변환해야합니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-string">'-1101'</span></span><span>); </span><span><span class="hljs-comment">// 산출:0,부정적인 부호 인식이 없습니다</span></span><span>
</span></span>
음수 부호를 수동으로 식별하고 변환합니다.
<span><span><span class="hljs-variable">$binary_string</span></span><span> = </span><span><span class="hljs-string">'-1101'</span></span><span>;
</span><span><span class="hljs-variable">$is_negative</span></span><span> = </span><span><span class="hljs-variable">$binary_string</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>] == </span><span><span class="hljs-string">'-'</span></span><span>;
</span><span><span class="hljs-variable">$binary_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ltrim</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>, </span><span><span class="hljs-string">'-'</span></span><span>);
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bindec</span></span><span>(</span><span><span class="hljs-variable">$binary_string</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$is_negative</span></span><span>) {
</span><span><span class="hljs-variable">$decimal</span></span><span> = -</span><span><span class="hljs-variable">$decimal</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decimal</span></span><span>; </span><span><span class="hljs-comment">// 산출:-13</span></span><span>
</span></span>
Bindec () 함수는 PHP에서 매우 유용한 도구이지만 몇 가지 공통된 한계와 잠재적 문제가 있습니다. 입력 문자열의 유효성을 보장하고 선행 0 및 큰 값을 처리하면 가장 일반적인 실수를 피할 수 있습니다. 음수 및 특수 형식 이진 문자열의 경우 수동으로 처리해야 할 수도 있습니다. 이러한 기술을 마스터하면 PHP의 Bindec () 기능을보다 효율적으로 사용하는 데 도움이 될 수 있습니다.