c语言怎么转换8进制?
方法一:直接使用控制字符串 %o 八进制%x
方法二:
求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的 个位 位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数 是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:
while(x){
printf("%d",x%n);//会打印出x转换为 N进制数 从低位到高位上的每一位数
x/=n;
}
十进制转换N进制:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int INT;
typedef struct dd
{
INT data;
struct dd *next;
}LNode,*LStack;
LStack pushstack(LStack top,int x)
{
LStack p;
p=(LStack)malloc(sizeof(LNode));
if((x)!=-1) {p->data=(x); p->next=top; top=p;}
c语言十六进制与十进制转换?
C语言中可以使用以下两种方法进行十六进制与十进制之间的转换:
1. 使用标准函数库中的函数进行转换:
- 十六进制转十进制:使用 `strtol()` 函数,该函数将一个字符串转换为长整型数值。例如:
````c
char hex_str[] = "1A";
long decimal_num = strtol(hex_str, NULL, 16);
printf("%ld", decimal_num); // 输出结果为:26
```
在这里,`strtol()` 函数的第一个参数为需要转换的十六进制字符串,第二个参数为指向第一个无法转换的字符的指针,第三个参数为进制数,这里设置为 16。
- 十进制转十六进制:使用 `sprintf()` 函数将十进制数转换为十六进制字符串,例如:
````c
int decimal_num = 26;
char hex_str[10];
sprintf(hex_str, "%X", decimal_num);
printf("%s", hex_str); // 输出结果为:1A
```
在这里,`sprintf()` 函数的第一个参数为存储转换结果的字符数组,第二个参数为格式化字符串,这里使用 `%X` 表示将整数以十六进制输出。

