一、iota函数:功能:把一个整数转换为字符串。
eg:
#include<stdlib.h>
#include<stdio.h>
void main()
{
int number=43;char string[100];
iota(number,string,2); //2代表转换为二进制。
printf("原数=%d,二进制数=%s\n",number,string);
}
二、将一个int类型变量(4字节), 以二进制形式进行输出--showbits.c
/*
*将var变量以二进制的形式进行输出,
*/
void showbits(int var)
{//0x01020304
unsigned charchar *p = (unsigned charchar *)&var;
int i, j;
for(j=0; j<4; j++){//小端格式输出0x04030201
unsigned char byte = *p;//*(p+3)大端格式输出0x01020304
for(i=0; i<8; i++){
putchar(byte & 0x80 ? '1' : '0');
byte <<= 1;
}
putchar(' ');
p++;//p--
}
puts("");
}
int main()
{
int a = 0x01020304;
showbits(a);
return 0;
}
三、将二进制数转换成十进制,一般是从字符串转换成一个整数,按位值乘以权值相累加得到结果。
如:1010=1*2^3+0*2^2+1*2+0 =((((1*2)+0)*2)+1)*2+0
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)
实现方法:
#include <stdio.h>
void swap( char *a, char *b )
{
char t=*a;
*a=*b;
*b=t;
}
char *reverse(char *s,int len)
{
char *b=s, *e=s+len-1;
while( b<e )
{
swap(b++,e--);
}
return s;
}
char *dec2bin(n)
{
static char str[33];
int i=0;
do {
str[i++]=n%2+'0';
n/=2;
}while( n );
str[i]=0;
return reverse(str,i);
}
int bin2dec(char *s)
{
int i,n=0;
for( i=0;s[i];i++ )
n=n*2+s[i]-'0';
return n;
}
void main()
{
int n=100;
char *p;
p=dec2bin(n);
printf("%d(D)=%s(B)\n", n, p );
n=bin2dec(p);
printf("%s(B)=%d(D)\n", p, n );
}
运行结果:
100(D)=1100100(B)
1100100(B)=100(D)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)