懂二进制转十进制的进!!

来源:百度知道 编辑:UC知道 时间:2024/05/15 04:01:28
2个字符

一个是a587d7a08260acfb605a298327415e9e

另外一个8260acfb605a2983
在注册表里的数值是这样的
是个管理员密码。不知道多少
YJxGWpCBC3gGAAAA

这好像是十六进制的数吧,转换成十进制分别是10*16e31+5*16e30+8*16e29+...+15*e0=ans类似下一个也可求出,公式为数码*e的位数减一的次方

几个一组阿?

#include <iostream.h>
void main()
{
//const char *p="8260acfb605a2983";
const char *p="a587d7a08260acfb605a298327415e9e";
for(int i=0;*(p+i); i+=2)
{
int num=0;
if(*(p+i)>='0' && *(p+i)<='9') num=*(p+i)-'0';
else num=*(p+i)-'a'+10;
if(!(*(p+i+1))) break;
if(*(p+i+1)>='0' && *(p+i+1)<='9') num=num*16+*(p+i+1)-'0';
else num=num*16+*(p+i+1)-'a'+10;
cout<<(char)num;
}
cout<<endl;
}

数字那么大,现在电脑一个字节都是8位的,好象没那么大的范围的数的类型,不管是int,double类型的都不够。前面加个long好象还是不够。