C语言中,十六进制转二进制

Python09

C语言中,十六进制转二进制,第1张

#include<stdio.h>

void main()

{

char c[16]

int a[16][4]={0}

int i=0,j

scanf("%s",c)---->>以字符串形式输入

while(c[i])--------->>>把字符串的每一位还原为数字

{

if(c[i]>'0'&&c[i]<'9')

c[i]=c[i++]-48

else if(c[i]>='A'&&c[i]<='Z')

c[i]=c[i++]-55

else if(c[i]>='a'&&c[i]<='z')

c[i]=c[i++]-87

else

{

puts("error\n")

return

}

}

i=0

while(c[i])---》》》每一位分解为四位,注意输出顺序就可以了

{

for(j=3j>=0j--)

{

a[i][j]=c[i]%2

c[i]/=2

}

for(j=0j<4j++)

printf("%d",a[i][j])

i++

}

}

其实很简单

16进制数的一位转换为二进制数的四位就可以了

有问题

留言

必回

这个算法是比较好的算法了

十进制转二进制:-----------------------------------------------

#include

#include

void

main()

{

int

d,n,i,j,a[50],outformat=1

printf("输入一个数:")

scanf("%d",&n)

if(n==0)

printf("\n十进制

0

转换二进制数:0")

else

{

printf("\n十进制

%d

转换二进制数:1",n)

for(i=1n!=1++i)

{

d=n%2

a[i]=d

n=n/2

}

for(j=i-1j>0--j)

{

if

(outformat%4==0)

printf("

")//取模的目的是为了每4个一组

++outformat

printf("%d",a[j])

}

}getch()

}

十进制转十六进制:-----------------------------------------------

#include

void

main()

{

int

u10

char

u16[10]

int

w=0,a,b,i

printf("请输入一个数字-->")

scanf("%d",&u10)

if(u10==0)

{

u16[0]='0'

w++

}

else

{

a=u10

while(a)

{

b=a%16

if(b<10)

{

u16[w]='0'+b

}

else

{

u16[w]='a'+b-10

}

a=a/16

w++

}

}

printf("\n")

printf("%d(10)转换为16进制数字为:",u10)

for(i=w-1i>=0i--)

{

printf("%c",u16[i])

}

printf("\n")

}

//将16进制的数保存到一个数组中,并将它一个个输出

#include <stdio.h>

#define N 16

int main()

{

int n 

int a[N]

int i

printf("Input a 16进制数: ")

scanf("%x",&n)

for (i = 0 i != N ++i)

{

a[N - 1 - i] = n % 2

n /= 2

}

for (i = 0 i != N ++i)

{

printf("%d",a[i])

if((i+1)%4 == 0)

printf(" ")

}

printf("\n")

return 0

}

示例运行结果:

Input a 16进制数: abcd

1010 1011 1100 1101