【发布时间】:2016-04-15 05:59:23
【问题描述】:
我希望在 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[]){
}
【问题讨论】:
-
不需要先转换成二进制。每个十六进制数字都有一个精确的八进制值。因此,您可以完全按照您对二进制所做的操作,但将其替换为十六进制到八进制的映射(例如,
F十六进制是17八进制)。更好的是,使用查找表。 -
@kaylum
F并不意味着17如果它不在 3 的倍数位置。所以不,事情没那么简单。 (但是,您可以将 3 个十六进制数字组转换为 4 个八进制数字组) -
@immibis 我对 OP 问题的解读是它应该转换一个十六进制数字。至少这是当前代码正在做的事情。也许我理解错了。
-
@immibis 我该怎么做?
-
这里有一个链接可以帮助你Hex to Octal conversion in C。
标签: c converter number-systems