php에서, bindec () 함수는 이진 문자열을 해당 10 진수 정수로 변환하는 데 사용됩니다. 예를 들어:
<?php
echo bindec("1101"); // 산출 13
?>
이를 통해 이진 데이터를 소수점 숫자로 쉽게 변환 할 수 있으므로 후속 계산을보다 쉽게 할 수 있습니다.
그러나 C 언어 표준 라이브러리는 그러한 기능을 직접 제공하지 않으므로 C 언어로 유사한 기능을 구현하려면이 변환을 완료하려면 자체 코드를 작성해야합니다. 아래는 C 언어로 Bindec () 의 기능을 구현하는 방법을 자세히 소개합니다.
구현 아이디어는 실제로 매우 직관적입니다.
입력 바이너리 스트링을 통해 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 반복합니다.
각 문자 '0'또는 '1'을 해당 숫자 값으로 변환하십시오.
이진 중량에 따라 합계를 계산하십시오. 각 비트에는 해당 전력이 2를 곱합니다.
이 결과를 축적하고 마지막으로 해당 소수점 번호를 얻습니다.
#include <stdio.h>
#include <string.h>
// 이진 문자열을 10 진수 정수로 변환하십시오
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'인 경우 왼쪽 하나만 이동하고 값이 추가되지 않습니다.
마지막으로 누적 된 결과가 반환됩니다.
이것은 php에서 bindec () 함수의 동작을 완벽하게 시뮬레이션합니다.
C 언어에는 내장 된 Bindec () 가 없지만 간단한 비트 작업 및 문자열 트래버스를 통해 바이너리에서 10 진수 기능을 쉽게 구현할 수 있습니다. 이 아이디어를 마스터하면 기본 변환을 완료하는 데 도움이 될뿐만 아니라 이진 및 비트 작업에 대한 이해도 심화 될 수 있습니다.