不是我不明白,这世界变化快,二进制转十进制
现在求类似这个代码的“二进制转十进制代码”
这个是醉书生写的十进制转二进制:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将 n 以二进制串存到 str
char* DtoB(char *str, unsigned long n)
{
int i;
unsigned long m = 0x80000000;
for(i = 0; i < 32; ++i)
{
str[i] = (m & n) ? '1' : '0';
m >>= 1;
}
str[32] = '\0';
return str;
}
// 从二进制串中读数
unsigned long BtoD(char *str)
{
int i;
unsigned long m;
unsigned long n = 0;
int len = strlen(str);
if (len > 32)
len = 32;
m = 0x80000000 >> (32 - len);
for(i = 0; i < len; ++i)
{
if (str[i] == '1') // 非法字符认作 0
n |= m;
m >>= 1;
}
return n;
}
问题点数:100、回复次数:14Top
1 楼xpdavis(咕嘟-不想孤独)回复于 2004-08-03 15:46:36 得分 10
看不出有什么问题Top
2 楼yiana1002(新的开始)回复于 2004-08-03 15:51:21 得分 5
楼主要干吗?Top
3 楼qingyuan18(zealot_tang)回复于 2004-08-03 17:01:18 得分 10
用库函数:
itoa("101010101",temp,10); /*temp是字符数组*/
int i=strtol(temp,NULL,10);
Top
4 楼Behard(我爱天安门)回复于 2004-08-03 18:06:47 得分 5
楼主要干嘛?Top
5 楼freefalcon(心宇—消失中...)回复于 2004-08-03 18:19:09 得分 5
楼主要干嘛?Top
6 楼ma100()回复于 2004-08-03 18:46:55 得分 10
void main()
{
long n;
char a[33];
n=BtoD("1010");
DtoB(a,n);
printf("%s",a);
}
运行正常啊(把你的DTOB返回值变为VOID)
只要叔祖>=33就行Top
7 楼UPCC(杂食动物)回复于 2004-08-03 18:56:08 得分 5
函数写得很有意思,收藏了。Top
8 楼micty(你说世界可以被我们平分?)回复于 2004-08-03 19:45:44 得分 5
写的不错,楼主想干什么?一起分享吗,不客气了Top
9 楼021850524(吸血鬼牌卫生巾)回复于 2004-08-04 09:12:46 得分 10
直接用itoa()这个函数就行了.可以指定进制的.Top
10 楼zwzzwz()回复于 2004-08-04 09:49:26 得分 10
最好能解释一下
for(i = 0; i < 32; ++i)
{
str[i] = (m & n) ? '1' : '0';
m >>= 1;
}
Top
11 楼lixunhua(李寻花)回复于 2004-08-04 23:52:21 得分 0
upTop
12 楼postage(jh)回复于 2004-08-05 08:31:34 得分 10
str[i] = (m & n) ? '1' : '0';
这不清零了吗?0与0,0与1不都是零呀。M=0xFFFFFFFF还差不多。Top
13 楼houhw1728(爱你)回复于 2004-08-05 13:05:26 得分 5
同一楼上Top
14 楼tyglikelove(火花)回复于 2004-08-05 13:29:49 得分 10
强制转换类型!Top




