PHPでは、 bindec()関数を使用して、バイナリ文字列を対応する小数整数に変換します。例えば:
<?php
echo bindec("1101"); // 出力 13
?>
これにより、バイナリデータを10進数に簡単に変換できるようになり、フォローアップの計算が容易になります。
ただし、C言語標準ライブラリはそのような関数を直接提供していないため、C言語で同様の機能を実装する場合は、この変換を完了するために独自のコードを作成する必要があります。以下に、c言語でbindec()の関数を実装する方法を詳細に紹介します。
実装のアイデアは実際には非常に直感的です:
左または右から左に入力バイナリ文字列を繰り返します。
各文字「0」または「1」を対応する数値に変換します。
バイナリの重みに従って合計を計算します。各ビットに対応する2の電力を掛けます。
これらの結果を蓄積し、最終的に対応する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()はありませんが、バイナリから小数関数は、単純なビット操作と文字列トラバーサルを使用して簡単に実装できます。このアイデアを習得することは、基本的な変換を完了するのに役立つだけでなく、バイナリとビットの操作の理解を深めることもできます。