由一个任意长度字符串生成唯一的32位整数

由一个任意长度字符串生成唯一的32位整数

    Lu核心库的输出函数StrToUniInt可将一个任意长度字符串转换成一个唯一的32位整数(只要没有对Lu进行重新初始化,该整数值就唯一);反过来,函数UniIntToStr接受一个32位整数,返回与之对应的字符串。

    例子:

仅需要以下支持文件:

1、头文件lu32.h。
2、导入库lu32.lib。
3、核心库lu32.dll。

#include <windows.h>
#include <iostream>
#include <time.h>
#include "lu32.h"

#pragma comment( lib, "lu32.lib" )

using namespace std;

void main(void)
{
	char Str1[]="abcd";			//字符串
	char Str2[]="f(x,y)=x+y";	//字符串
	char *pStr;
	luVOID k1,k2,kk,i,j,k;
	clock_t t0;

	if(!InitLu()) return;		//初始化Lu
	k1=StrToUniInt(Str1,strlen(Str1));	//由字符串Str1获得一个唯一的整数
	k2=StrToUniInt(Str2,strlen(Str2));	//由字符串Str2获得一个唯一的整数
	cout<<"k1="<<k1<<"  k2="<<k2<<endl;
	k1=StrToUniInt(Str1,strlen(Str1));	//由字符串Str1获得一个唯一的整数
	k2=StrToUniInt(Str2,strlen(Str2));	//由字符串Str2获得一个唯一的整数
	cout<<"k1="<<k1<<"  k2="<<k2<<endl;
	pStr=UniIntToStr(k1,kk);			//由整数k1获得字符串
	if(pStr) cout<<pStr<<endl;
	pStr=UniIntToStr(k2,kk);			//由整数k2获得字符串
	if(pStr) cout<<pStr<<endl;

	t0=clock();							//测试效率
	for(k=0;k<10;k++)
	{
		for(i=1;i<256;i++)
		{
			Str1[1]=i; Str2[3]=i;		//变换字符串
			for(j=1;j<256;j++)
			{
				Str1[2]=j; Str2[4]=j;	//变换字符串
				k1=StrToUniInt(Str1,strlen(Str1));
				k2=StrToUniInt(Str2,strlen(Str2));
				pStr=UniIntToStr(k1,kk);
				pStr=UniIntToStr(k2,kk);
			}
		}
	}
	cout<<"耗时 "<<(clock()-t0)/1000.0<<" 秒。"<<endl;
	cin.get();
	FreeLu();	//释放Lu
}


结果:

k1=4297048  k2=4299496
k1=4297048  k2=4299496
abcd
f(x,y)=x+y
耗时 3.046 秒。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值