如何在C语言中将八进制数转换为十六进制并将十六进制转换为八进制?
答案 0 :(得分:2)
由于基数的概念仅在描述数字的表示形式或输出时才有意义,因此我假设您的意思是“如何在数字的八进制和十六进制表示形式之间进行转换?”
幸运的是,C标准要求printf
系列功能包括格式说明符%o
和%x
,它们分别表示“八进制数”和“十六进制数” ,因此,使用snprintf
,您可以这样做:
char buffer[100];
snprintf(buffer, 100, "%X", 0777);
printf("%s\n", buffer);
snprintf(buffer, 100, "%o", 0xFFF);
printf("%s\n", buffer);
输出:
1FF
7777
此外,strtol
-family函数具有用于将字符串转换为数字的基数参数:
int n;
n = strtol("0777", NULL, 8);
printf("%d\n", n);
n = strtol("0x1FF", NULL, 16);
printf("%d\n", n);
输出:
511
511
借助这些构件,您现在已经具备处理数值的八进制和十六进制表示形式并在它们之间进行转换的必要知识。