Я ищу, чтобы сделать шестнадцатеричный октальный конвертировать в C, и сейчас я могу преобразовать строку из шестнадцатеричной в двоичную. Теперь я хочу преобразовать его из двоичного в восьмеричное. Я считаю, что это был самый простой способ. Это то, что у меня есть сейчас. Это функция, вызываемая в основной программе. Как мне теперь идти? Я как бы застрял, и любая помощь будет отличной. Спасибо заранее.Как сделать hex-восьмеричный конвертер в C
#include "my_lib_3.h"
#include <string.h>
#include "mrb_lib_1.h"
#include <math.h>
char *hex2octal(char s[]){
char input_string [20] = "";
//char return_string[50] = "";
int num, binary_val, decimal_val = 0, base = 1, rem;
printf("Enter a hex number:\n");
scanf("%s",input_string);
int i;
for (i=0; i<1; i++) {
switch(input_string[i]){
case '0' :
// strcat(return_string, "0000");
num = "0000";
break;
case '1' :
// strcat(return_string, "0001");
num = "0001";
break;
case '2' :
// strcat(return_string, "0010");
num = "0010";
break;
case '3':
// strcat(return_string, "0011");
num = "0011";
break;
case '4':
// strcat(return_string, "0100");
num = "0100";
break;
case '5':
// strcat(return_string, "0101");
num = "0101";
break;
case '6':
// strcat(return_string, "0110");
num = "0110";
break;
case '7':
// strcat(return_string, "0111");
num = "0111";
break;
case '8':
// strcat(return_string, "1000");
num = "1000";
break;
case '9':
// strcat(return_string, "1001");
num = "1001";
break;
case 'A':
// strcat(return_string, "1010");
num = "1010";
break;
case 'B':
// strcat(return_string, "1011");
num = "1011";
break;
case 'C':
// strcat(return_string, "1100");
num = "1100";
break;
case 'D':
// strcat(return_string, "1101");
num = "1101";
break;
case 'E':
// strcat(return_string, "1110");
num = "1110";
break;
case 'F':
// strcat(return_string, "1111");
num = "1111";
break;
default:
printf("Program doesn't support this yet\n");
break;
}
printf("The binary equivalent of %s is %s\n", input_string, num);
int z;
for (z = 0; return_string[z] != '\0'; z++) {
if(return_string[z] = '5'){
printf("%i",z);
printf("Yo!\n");
z++;
}
}
return 0;
}
char *octal2dec(char s[]){
}
форматировать Ваш код. – stackptr
Нет необходимости сначала преобразовывать в двоичный файл. Каждая шестнадцатеричная цифра имеет точное восьмеричное значение. Таким образом, вы можете сделать именно то, что вы сделали для двоичного, но замените его шестнадцатеричным на восьмеричное сопоставление (например, 'F' hex - это« 17 »восьмеричное). Еще лучше, используйте таблицу поиска. – kaylum
@kaylum 'F' не означает' 17', если он не находится в позиции с несколькими-тремя. Нет, это не так просто. (Однако вы можете преобразовать группы из 3 шестнадцатеричных цифр в группы из 4 восьмеричных цифр) – immibis