您当前的位置:首页 > 互联网教程

c语言怎么转换8进制输出

发布时间:2025-05-14 00:46:25    发布人:远客网络

c语言怎么转换8进制输出

一、c语言怎么转换8进制输出

方法一:直接使用控制字符串%o八进制%x

求余来算,比如求十进制数 x(x100)的8进制,先通过 x%8可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的个位位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:

printf(%d,x%n);//会打印出x转换为 N进制数从低位到高位上的每一位数

LStack pushstack(LStack top,int x)

p=(LStack)malloc(sizeof(LNode));

if((x)!=-1){p-data=(x); p-next=top; top=p;}

LStack outstack(LStack top,int*x)

printf(请输入原数及要转换的进制:);

scanf(%d%d,x,n);//输入一个十进制数和要转换的进制,比如3 2得到1}while(x35||x0||n2);

while(x){//这个循环把每一位放到栈中

二、C语言中,%o八进制输出,怎么算的,能说具体吗

1、首先打开Microsoft Visual C++软件,新建好文件后,输入如下内容。

2、然后在{}之间输入函数的内容,先定义变量c1,变量的类型为char,字符型。

3、然后,用printf语句进行输出。

4、当内容输入好后,点击图中工具按钮,对程序进行检测。

5、检测到没有错误后,点击运行(红色感叹号),弹出的黑色窗口中为最终结果,可以看到大写字母“A”显示在上面。

三、C语言如何把十六进制转换成八进制

此题涉及到大数据处理(输入的16进制数最大可能到100000位),所以不能用常规的除8模8方法做,思路:

再将二进制转换为八进制表示,然后输出

if(c>='0'&&c<='9')

char*input,*output,*output2,*ptr;

input=(char*)malloc(100000+1);/*储存输入的十六进制数*/

output=(char*)malloc(100000*4+4);/*储存过度用的二进制数*/

output2=(char*)malloc(100000*3+3);/*储存最终结果八进制数*/

/*首先将十六进制转换为二进制,1位十六进制数对应4位二进制数*/

output[j++]=((tmp>>3)&0x1);/*bit3*/

output[j++]=((tmp>>2)&0x1);/*bit2*/

output[j++]=((tmp>>1)&0x1);/*bit1*/

output[j++]=((tmp>>0)&0x1);/*bit0*/

/*将二进制转换为八进制,3位二进制数对应1位八进制数,从低位开始转*/

/*j为二进制数组下标,每个循环减3*/

/*i为八进制数组下标,每个循环减1*/

output2[i--]=(output[j-2]<<2|output[j-1]<<1|output[j])+'0';

output2[i--]=(output[j-1]<<1|output[j])+'0';

output2[i--]=output[j]+'0';

/*八进制数组的有效下标从i+1开始*/

/*去除前导的'0'字符(可能会影响判定结果)*/

while(output2[j]=='0')j++;

/*如果整个字符串都是'0',则直接输出结果'0',否则从首位非'0'开始输出*/

printf("%s\n",&output2[j]);