bindec()は、文字列を厳密に確認しません。 0と1を除いて文字列に他の文字がある場合、関数は最初の非0または1文字から開始されるか、予期しない結果を返します。
例:
<code> <?php echo bindec( "10102"); //「2」が無視されているため、結果はまだ10ですか?> </code>これは、渡す文字列に予期しない文字がある場合、不正確な変換結果を引き起こす可能性があるが、エラーは報告されないことを意味します。
バイナリ文字列にスペースまたは目に見えない文字が前後にある場合、結果にも影響します。例えば:
<code> <?php echo bindec( "1010"); //出力10、前後のスペースはEcho Bindec( "\ n1010 \ n")に影響しません。 //結果は特定の環境に依存する可能性がありますか?> </code>スペースは一般に遮るものがありませんが、一部の特殊文字(タブや非バイナリ文字など)は、誤った結果を引き起こす可能性があります。
bindec()のみが文字列を処理します。空の文字列または非弦タイプが渡された場合、動作は予想とは異なる場合があります。
<code> <?php echo bindec( ""); // 0を返し、エラーECHO BINDEC( "ABC"); //有効なバイナリ文字がないため0を返しますか?> </code>したがって、使用する前に、入力が法的バイナリ文字列であることを確認してください。
bindec()は、例外や警告を投げません。非弦のタイプが渡された場合、PHPは変換しようとします。これは予期しない結果が生じる可能性があります。
<code> <?php echo bindec(1010); //数字を文字列として扱うと、結果はbindec( "1010")?> </code>と同じですただし、データソースが信頼できない場合は、最初にタイプチェックとフィルタリングを実行することをお勧めします。
問題は、関数自体が間違っているということではなく、変換結果が正しくないことです。たとえば、入力バイナリに署名されると予想されますが、 bindec()は署名されていない番号の小数値を返します。
bindec()のみが0と1で構成される文字列のみを処理し、他の文字は無視されるか、例外をもたらします。
エラーや警告はスローされず、入力データ形式が正しくないため問題が発生する可能性があります。
使用する場合は、入力が法的バイナリ文字列であることを確認し、必要に応じて検証およびクリーニングしてください。
標識ビットのタイプ変換または誤解による結果逸脱を避けるために、関数の動作と制限を理解します。