현재 위치: > 최신 기사 목록> Base_Convert () 함수에서 음의 이진 변환을 처리 할 때의 예방 조치는 무엇입니까?

Base_Convert () 함수에서 음의 이진 변환을 처리 할 때의 예방 조치는 무엇입니까?

gitbox 2025-08-15
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,접두사 코드 예제로만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"실행을 시작하십시오 PHP 스크립트...\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * base_convert() 기능에서 음의 이진 변환을 처리 할 때,예방 조치는 무엇입니까??
 *
 * base_convert() 예 PHP 내장 기능,숫자 문자열을 다른 숫자로 변환하는 데 사용됩니다。
 * 它的函数签名예:string base_convert(string $number, int $from_base, int $to_base)
 *
 * 그러나 실제로 사용합니다,base_convert() 음수의 직접 처리를 지원하지 않습니다。
 * 다음은 음수와 부분 숫자를 변환 할 때주의를 기울일 몇 가지 핵심 사항을 자세히 설명합니다.。
 */</span>

</span><span><span class="hljs-comment">// 1. base_convert() 음수 입력은 지원되지 않습니다</span></span><span>
</span><span><span class="hljs-comment">// base_convert() 받았다 $number 参数예字符串形式的数字,且该数字只能예非负整数。</span></span><span>
</span><span><span class="hljs-comment">// 부호가있는 문자열이 전달되는 경우(좋다 "-15"),함수는 부정적인 징후를 불법 문자로 무시합니다,잘못된 결과를 초래합니다。</span></span><span>

</span><span><span class="hljs-comment">// 예</span></span><span>
</span><span><span class="hljs-variable">$negativeNumber</span></span><span> = </span><span><span class="hljs-string">"-15"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$negativeNumber</span></span><span>, </span><span><span class="hljs-number">10</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-string">"결과를 변환합니다(부정적인 표시로 입력하십시오): <span class="hljs-subst">$result</span></span></span><span>\n"; 
</span><span><span class="hljs-comment">// 출력 결과는 음수 부호를 무시합니다,전환과 동일합니다“15”,并不예期望的负数二进制表示。</span></span><span>

</span><span><span class="hljs-comment">// 2. 음수를 다루는 일반적인 방법</span></span><span>
</span><span><span class="hljs-comment">// 왜냐하면 base_convert() 부정적인 변환은 지원되지 않습니다,通常的做法예先检测数字的正负号,</span></span><span>
</span><span><span class="hljs-comment">// 그런 다음 절대 값은 이진 방식으로 변환됩니다.,마지막으로 음수 부호를 수동으로 추가하십시오。</span></span><span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">base_convert_negative</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$from_base</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$to_base</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-variable">$isNegative</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>) &gt; </span><span><span class="hljs-number">0</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$number</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">$isNegative</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
        </span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
    }
    </span><span><span class="hljs-variable">$converted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-variable">$from_base</span></span><span>, </span><span><span class="hljs-variable">$to_base</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$isNegative</span></span><span> ? </span><span><span class="hljs-string">'-'</span></span><span> . </span><span><span class="hljs-variable">$converted</span></span><span> : </span><span><span class="hljs-variable">$converted</span></span><span>;
}

</span><span><span class="hljs-comment">// 시험</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">base_convert_negative</span></span><span>(</span><span><span class="hljs-string">"-15"</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;  </span><span><span class="hljs-comment">// 산출:-1111</span></span><span>

</span><span><span class="hljs-comment">// 3. 이진 변환의 범위 제한</span></span><span>
</span><span><span class="hljs-comment">// base_convert() 支持的进制范围예 2 도착하다 36。</span></span><span>
</span><span><span class="hljs-comment">// 좋다果试图转换超出这个范围的进制,함수는 빈 문자열을 반환합니다。</span></span><span>
</span><span><span class="hljs-comment">// 따라서 음수를 다룰 때,또한 들어오는 부서가 합법적인지 확인해야합니다.。</span></span><span>

</span><span><span class="hljs-comment">// 4. 음수의 부분 표현</span></span><span>
</span><span><span class="hljs-comment">// 어떤 시나리오에서,보완 형식에서 음수를 나타내는 것이 바람직 할 수 있습니다.。</span></span><span>
</span><span><span class="hljs-comment">// 하지만 base_convert() 只예简单转换数值,보완 또는 서명 된 전환에 대한 지원이 없습니다。</span></span><span>
</span><span><span class="hljs-comment">// 좋다果需要补码表示,비트 작동 및 서식은 직접 처리해야합니다。</span></span><span>

</span><span><span class="hljs-comment">// 5. 요약</span></span><span>
</span><span><span class="hljs-comment">// - base_convert() 마이너스 번호의 직접 변환은 지원되지 않습니다。</span></span><span>
</span><span><span class="hljs-comment">// - 음성 표지판은 수동으로 분리되어야합니다,절대 값을 변환합니다,부정적인 부호를 추가하십시오。</span></span><span>
</span><span><span class="hljs-comment">// - 시스템이 있어야합니다 2 도착하다 36 ~ 사이。</span></span><span>
</span><span><span class="hljs-comment">// - 보완 코드 또는 기타 음수 바이너리 표현은 직접 구현해야합니다.。</span></span><span>

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>