Перевод из двоичной в десятичную (большие числа представленные строкой)
Попытался реализовать вот отсюда алгоритм: https://stackoverflow.com/questions/5246976/binary-string-to-decimal-string
void binaryToString(char *binaryFull, char *decimalString) {
int zeroCounter = 0;
while (binaryFull[zeroCounter] == '0') {
zeroCounter++;
}
while (binaryFull[0] != '\0') {
int R = 0;
char binaryStack[110] = "";
for (int i = 0; i < strlen(binaryFull) - zeroCounter; i++) {
R = 2*R + i;
if (R >= 10) {
binaryStack[i] = '1';
R -= 10;
} else {
binaryStack[i] = '0';
}
}
binaryStack[strlen(binaryFull) - zeroCounter] = '\0';
printf("%s\n", binaryStack);
int j = 0;
while (binaryStack[j] == '0') {
j++;
}
for (int i = 0, k = j; i < strlen(binaryStack) - j; i++, k++) {
binaryFull[i] = binaryStack[k];
}
binaryFull[strlen(binaryStack) - j] = '\0';
}
}
Но не получается. R, как я понимаю, должна быть очередная десятичная цифра получающегося числа? Но вот не понимаю, что за "b in bits of X". b это длина строки, или что-то другое?