我们知道,一般在32位机子上,unsigned int是32位的,也就是说,该数据类型的最大上限是4294967295,这是10位的,如果再大,该数据类型就无法存储了,也许大家会说,
我们可以使用char*类型啊,但是对于一些运算char*类型是很不方便的,比如啊,仅仅是比如,我们在进行破解的时候,暴力破解的时候,我们要对出他的密码,首先进行比较简
单的数字比对。这时候我们使用数字进行简单的++运算就可以,但是如果是char*类型的话,该运算就不能成立了,只能使用一种算法来实现,这样的话费时费力,但是如果使用
结构体的话,就很简单了,比如LARGE_INTEGER数据类型,(好像是这个数据类型),现在说下我自己实现的吧
int lowPart=0;
int highPart=0;
lowPart++;
if(lowPart==4294967295)
{
highPart++;
lowPart=0;//这里其实不用赋值等于0,其下一次lowPart++y也会是0
}
memset(pwd,0,20);
//检测lowPart是几位数,然后进行填充0
if(lowPart<10 if="" highpart="" 0="" sprintf="" pwd="" d000000000="" d="" highpart="" lowpart="" else="" sprintf="" pwd="" 00000="" d="" lowpart="" else="" if="" lowpart="">=10&&lowPart<=99)
{
//说明是两位数
if(highPart!=0)
{
sprintf(pwd,"%d00000000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"0000%d",lowPart);
}
}else if(lowPart>=100&&lowPart<=999)
{
//说明是三位数
if(highPart!=0)
{
sprintf(pwd,"%d0000000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"000%d",lowPart);
}
}else if(lowPart>=1000&&lowPart<=9999)
{
//说明是四位数
if(highPart!=0)
{
sprintf(pwd,"%d000000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"00%d",lowPart);
}
}else if(lowPart>=10000&&lowPart<=99999)
{
//说明是五位数
if(highPart!=0)
{
sprintf(pwd,"%d00000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"0%d",lowPart);
}
}else if(lowPart>=100000&&lowPart<=999999)
{
//说明是6位数
if(highPart!=0)
{
sprintf(pwd,"%d0000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"%d",lowPart);
}
}else if(lowPart>=1000000&&lowPart<=9999999)
{
//说明是7位数
if(highPart!=0)
{
sprintf(pwd,"%d000%d",highPart,lowPart);
}
else
{
sprintf(pwd,"%d",lowPart);
}
}else if(lowPart>=10000000&&lowPart<=99999999)
{
//说明是8位数
if(highPart!=0)
{
sprintf(pwd,"%d00%d",highPart,lowPart);
}
else
{
sprintf(pwd,"%d",lowPart);
}
}else if(lowPart>=100000000&&lowPart<=999999999)
{
//说明是9位数
if(highPart!=0)
{
sprintf(pwd,"%d0%d",highPart,lowPart);
}
else
{
sprintf(pwd,"%d",lowPart);
}
}else if(lowPart>=1000000000&&lowPart<=9999999999)
{
//说明是10位数
if(highPart!=0)
{
sprintf(pwd,"%d%d",highPart,lowPart);
}
else
{
sprintf(pwd,"%d",lowPart);
}
}
这是从我的项目中提炼出来的一部分,我想实现的是6位数字000000到4294967295 4294967295的以步长为1进行增长的全过程,进行比对