首页
社区
课程
招聘
[求助]C语言算法
发表于: 2008-11-29 17:22 3460

[求助]C语言算法

2008-11-29 17:22
3460
/*-------------------------------------------------------------*/
/* GenRegCode - 注册算法主函数                                */
/*-------------------------------------------------------------*/
BOOL GenRegCode( HWND hwnd)
{
        TCHAR cName[MAXINPUTLEN]={0};
        TCHAR cCode[100]={0};
       
       
        GetDlgItemText(hwnd,IDC_TXT0,cName,sizeof(cName)/sizeof(TCHAR)+1);
        if (strlen(cName)==0)
        {
               
                MessageBox(hwnd,"请输入姓名!","Error",MB_ICONEXCLAMATION);
                return TRUE;
        }

        int i,k1=0,k2=0;
        char ch;
        for(i=0; cName[i]!=0&&i<=9;i++)

        {
                ch=(BYTE)cName[i];
                if(ch<'A')  return FALSE;

                k1+=(ch>'Z')?(ch-32):ch;       
        }                        
        k2=k1^0x5678^0x1234;  
        wsprintf(cCode,TEXT("%ld"),k2);
        SetDlgItemText(hwnd,IDC_TXT1,cCode);
        return TRUE;       

}
里面的
k2=k1^0x5678^0x1234;  
K2,K1,5678,1234分别是什么进制表示的

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
是十六进制。

进制只是对人来说的,或者说对程序员和高级语言来说的。

在机器内部,所有的一切都是bit串。
2008-11-29 17:32
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
0x 书上有
2008-11-29 17:40
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
4
01234567//8进制
1234567890//10进制
0x123456789//16进制
2008-11-29 18:47
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
5
代码说:16进制的用户名和1234,5678异或就是注册码
我用xiaofu,16进制:7869616F6675跟1234,5678异或得到的值转化成10进制不是注册码呢
2008-11-29 18:57
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
你连代码都没读懂。

你好好看看k1的值是怎么来的。
2008-11-29 19:20
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
7
,其实我不懂VC++,我只想用E写个注册机,关键是现在算法都还没弄懂
2008-11-29 19:24
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
8
用户名是如何变成k1的
2008-11-29 20:11
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=xiaofu;543165]for(i=0; cName[i]!=0&&i<=9;i++)
  {
    ch=(BYTE)cName[i];
    if(ch<'A')  return FALSE;

    k1+=(ch>'Z')?(ch-32):ch;  
  }                       [/QUOTE]

k1 是把用户名的ASCII值(先经过一定的处理后)相加得到的。

不是你说的xiaofu -> 7869616F6675这样。

我不懂易,别问我用易语言如何表达这段计算过程。
2008-11-29 21:57
0
游客
登录 | 注册 方可回帖
返回
//