❶ 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]!='