現在の位置: ホーム> 最新記事一覧> CのPHPでbindec()関数を実装する方法は?

CのPHPでbindec()関数を実装する方法は?

M66 2025-07-08

PHPでは、 bindec()関数を使用して、バイナリ文字列を対応する小数整数に変換します。例えば:

 <?php
echo bindec("1101"); // 出力 13
?>

これにより、バイナリデータを10進数に簡単に変換できるようになり、フォローアップの計算が容易になります。


ただし、C言語標準ライブラリはそのような関数を直接提供していないため、C言語で同様の機能を実装する場合は、この変換を完了するために独自のコードを作成する必要があります。以下に、c言語でbindec()の関数を実装する方法を詳細に紹介します。


C言語でbindec()関数を実装するためのアイデア

実装のアイデアは実際には非常に直感的です:

  1. 左または右から左に入力バイナリ文字列を繰り返します。

  2. 各文字「0」または「1」を対応する数値に変換します。

  3. バイナリの重みに従って合計を計算します。各ビットに対応する2の電力を掛けます。

  4. これらの結果を蓄積し、最終的に対応する10進数を取得します。


サンプルコード

#include <stdio.h>
#include <string.h>

// バイナリ文字列を小数整数に変換します
unsigned int bindec(const char *binaryStr) {
    unsigned int result = 0;
    int len = strlen(binaryStr);
    for (int i = 0; i < len; i++) {
        char c = binaryStr[i];
        if (c == '1') {
            result = (result << 1) | 1;  // 左に移動します,現在のビットを追加します1
        } else if (c == '0') {
            result = result << 1;  // 左に移動します,現在のビットを追加します0
        } else {
            // 非存在する場合 '0' または '1' キャラクター,可以返回错误または忽略
            // ここで簡単な処理,直接返す0,実際の使用で改善することができます
            return 0;
        }
    }
    return result;
}

int main() {
    const char *binaryStr = "1101";
    unsigned int decimalValue = bindec(binaryStr);
    printf("二进制キャラクター串 %s 対応する10進システムはです %u\n", binaryStr, decimalValue);
    return 0;
}

ランニング効果:

 二进制キャラクター串 1101 対応する10進システムはです 13

コード解析

  • strlenは、文字列の長さを取得するために使用されます。

  • 文字列の各文字を繰り返します:

    • 「1」の場合、最初に現在の結果を左に移動します(2を掛けるのに相当)。次に1を追加します。

    • 「0」の場合、1つの左側のみを移動し、値は追加されません。

  • 最後に、蓄積された結果が返されます。

これは、PHPのBindec()関数の動作を完全にシミュレートします。


まとめ

C言語には組み込みのbindec()はありませんが、バイナリから小数関数は、単純なビット操作と文字列トラバーサルを使用して簡単に実装できます。このアイデアを習得することは、基本的な変換を完了するのに役立つだけでなく、バ​​イナリとビットの操作の理解を深めることもできます。