PHPでは、 bindec()関数を使用して、バイナリ文字列を小数点に変換します。その基本的な使用法は非常に簡単です。純粋なバイナリ文字列(0と1で構成される)を渡すと、対応する小数整数を返すことができます。
例えば:
<code> <?php echo bindec( '1011'); //出力11?> </code>ただし、着信バイナリ文字列にスペースが含まれている場合、 bindec()関数はデフォルトではサポートされていません。文字列をゼロから解析し、0または1ではない文字に遭遇したときに処理を停止するため、スペースは誤った結果を引き起こし、0を返します。
例:
<code> <?php echo bindec( '101 1'); //出力5、スペースに遭遇した後に処理が停止したため、実際に「101」?> </code>ご覧のとおり、スペースにより、 bindec()が完全なバイナリデータを正常に解析できません。
バイナリ文字列にスペースがあり、正しく変換したい場合は、まずPHPの文字列処理関数を使用してスペースを削除し、次にbindec()に渡すことができます。
例:
<code> <?php $ binarywithspaces = '101 1101 001'; $ cleanbinary = str_replace( ''、 ''、$ binarywithspaces); $ decimalvalue = bindec($ cleanbinary); echo $ decimalValue; ?> </code>ここでは、すべてのスペースがstr_replace()を介して削除され、 bindec()が呼び出され、渡されたものが純粋なバイナリ文字列であることを確認します。
文字列に他の空白文字(タブ文字\ t 、ラインブレイク\ nなどなど)がある場合は、 preg_replace()を使用してすべての白人を削除することをお勧めします。
<code> <?php $ binarywithwhitespace = "101 \ t1101 \ n001"; $ cleanbinary = preg_replace( '/\ s+/'、 ''、$ binarywithwhitespace); $ decimalvalue = bindec($ cleanbinary); echo $ decimalValue; ?> </code>これにより、バイナリ文字列にWhitespace文字がないことが保証され、 Bindec()を正確に解析できます。
bindec()関数は、スペースやその他の空白文字を含むバイナリ文字列入力をサポートしていません。
bindec()を使用する前に、入力文字列のすべてのWhitespace文字をクリアしてください。
str_replace( ''、 ''、$ str)を使用してスペースを削除するか、より強力なpreg_replace( '/\ s+/'、 ''、$ str)を使用して、すべての白人文字を削除できます。
クリーンな純粋なバイナリ文字列を処理することによってのみ、bindec()が小数値を正しく返すことが保証されます。