当前位置:首页 » 编程语言 » c语言16进制转8进制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言16进制转8进制

发布时间: 2022-01-14 22:26:39

c语言如何把十六进制转换成八进制

摘要 1、给定n个十六进制正整数,输出它们对应的八进制数。

❷ c语言二进制八进制十进制16进制怎么转换

二进制转换成八进制数
(1)二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8

(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2

❸ C语言把16进制数转化为8进制数求代码

字符串格式的16进制数,输出为8进制数,参考代码如下:
#include<stdio.h>
void DectoOct(int n, int flag)
{
int t;
if(n==0) {
if(flag==1) printf("0");
return;
}
t=n%8;
DectoOct(n/8,0);
printf("%d",t);
}
void HexToOct(char b[])
{
int i=0,t=0;
char ch;
while((ch=b[i])!=0){
if(ch>='0'&&ch<='9')
t=t*16+ch-'0';
else if(ch>='A'&&ch<='F')
t=t*16+ch-'A'+10;
else if(ch>='a'&&ch<='f')
t=t*16+ch-'a'+10;
else return -1;
++i;
}
DectoOct(t,1);
}
int main()
{
HexToOct("1A");
return 0;
}

❹ C语言中字符串如何转换为二进制、八进制、十进制、十六进制

什么意思,?没懂,,,是说转为 2 8 16进制的整数?
只要是整数 int。就只有大小。没有进制的区别。
所谓的进制,只是为了人为识别。
但是可以把整数,转换为响应进制的字符串。
举例
char num[] = "15";
int val = atoi(num); //字符串转为整数

char tem[16] = {};
_itoa(val,tem,2);//整数转为2进制字符串
_itoa(val,tem,8);//8进制
_itoa(val,tem,16);//16进制
_itoa(val,tem,10);

❺ C语言中的转换说明%o和%0x,八进制和十六进制转换

并不是说最高位为1 就是有符号的。
无符号的也有最高位为1的,只不过最高位并不代表正负,只有有符号数才用最高位表示正负的

❻ c语言十六进制转八进制,这样行吗

显然不对

十六进制输入1F,对应的八进制应该是37,而你这样输出结果是117,显然不对

❼ C语言中如何换算八进制=进制=十六进制

最简单的办法:
将数据换算成10进制(除2取余法),然后再用fprintf直接打印就好了

如下:
1 #include <stdio.h>
2 int
3 main(void)
4 {
5 int n=8;
6 fprintf(stdout,"八进制是:%o\n十六进制是:%x\n",n,n);
7
8 return 0;
9 }

如果还有问题,欢迎来http://groups.google.com/datastream来讨论

❽ C语言编程,输入十进制数输出十六进制和八进制

可以通过下面的公式解决

#include<stdio.h>

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

{int Array8[maxn];

int Array16[maxn];

int n, cot8 = 0;

scanf("%d", &n);

int m = n, cot16 = 0;

while(n) {Array8[cot8++] = n % index8;

n /= index8;}

while(m) {Array16[cot16++] = m % index16;

m /= index16;}

int i;

for(i = cot8 - 1; i >= 0; i--)

printf("%d", Array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)

(8)c语言16进制转8进制扩展阅读:

十进制转十六进制的具体方法:

对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。

10进制数转换成十六进制数,这是一个连续除以16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

❾ c语言十六进制转换为八进制

手工还是编程?
手工可以这样:把16进制数从左至右按16进制各位上的“数”代表的二进制依次写出来,比如0x9B8D7F6543D为,再从右至左每3位分开(最左端不足3位时在前面用0补齐)010,011,011,100,011,010,111,111,101,100,101,010,000,111,101。最后用八进制符号对应写出来就可以了——233432775452075。十六进制数0x9B8D7F6543D的八进制就是233432775452075!
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
void dtob(char *p,int n){
static i=0;
if(n) dtob(p,n/2);
if(n) p[i++]=n%2+'0';
}
int dtoo(char *p){
int x,i,k=strlen(p)%3;
for(x=i=0;i<k;(x*=2)+=p[i++]-'0');
for(;p[i];i+=3)
(x*=10)+=((p[i]-'0')<<2)+((p[i+1]-'0')<<1)+p[i+2]-'0';
return x;
}
void main(void){
int n;
char a[33]="";
printf("Type a hexadecimal number...\nn=0x");
scanf("%X",&n);
dtob(a,n);
printf("The binary is %s.\n",a);
printf("The octal %d.\n",dtoo(a));
}

❿ 数据 结构 16进制转8进制代码C语言

#include<stdio.h>

voidmain()

{

chara[20];

charb[40];

charc[40];

inti,n,data;

printf("输入十六进制数据(长度20以内)");gets(a);

n=0;

for(i=0;a[i]!='';i++)

{

if((a[i]<'0')||(a[i]>'9'&&a[i]<'A')||(a[i]>'F'&&a[i]<'a')||a[i]>'f')

{

printf("输入数据不合法! ");

return;

}

n++;

}

data=0;

for(i=0;i<n;i++)

{

if(a[i]<'9')

{

data=data*10+(a[i]-'0');

}

elseif(a[i]<'F')

{

data=data*10+(a[i]-'A')+10;

}

else

{

data=data*10+(a[i]-'a')+10;

}

}

printf("该数据的十进制数为:%d ",data);

n=0;

while((data/8)!=0)

{

b[n]=data%8;

data/=8;

n++;

}

b[n]=data%8;

n++;

b[n]='';

for(i=0;i<n;i++)

{

c[i]=b[n-i-1]+'0';

}

c[n]='';

printf("八进制数为:%s ",c);

}