给定一个字符串,如何将其转换成唯一整数

robin100 2008-06-03 10:43:44
给定任意一个字符串 比如:'aaaabbb', 现在要将它转换成一个整数,并且唯一,应该怎么做呢?
...全文
623 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzmhero 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gzmhero 的回复:]
Delphi(Pascal) code
function StringToInt(str:string):integer;
var
i:integer;
value,iTemp:integer;
begin
value:=0;
for i:=1 to Length(str) do
begin
iTemp:=(Ord(str[i])-Ord('a'))+1;
value:=value*26+iTemp;
end;
Result:=Value;;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=IntToStr(StringToInt(Edit1.Text))…
[/Quote]

8楼的思路,a---z都转成26进制的数字1----26,然后再转换成10进制,只要串不重复,10进制数字就不会重复。
gzmhero 2008-06-03
  • 打赏
  • 举报
回复

function StringToInt(str:string):integer;
var
i:integer;
value,iTemp:integer;
begin
value:=0;
for i:=1 to Length(str) do
begin
iTemp:=(Ord(str[i])-Ord('a'))+1;
value:=value*26+iTemp;
end;
Result:=Value;;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=IntToStr(StringToInt(Edit1.Text));
end;

小笨象 2008-06-03
  • 打赏
  • 举报
回复
想法:先MD5,然后CRC32,就成为唯一的了。但前提是你的字符串不能重复,如果重复了,就一样了,
再或者,在转换前,加入一个GUID,与输入的字符串组成一个新字符串,再进行转换。
圆满了。
robin100 2008-06-03
  • 打赏
  • 举报
回复
谢谢大家,有没有例程或代码
sunware 2008-06-03
  • 打赏
  • 举报
回复
如果限定在26个字母上,且在6个以内,其实就是个26进制转10进制的问题.这个问题很容易解决.
gzmhero 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 robin100 的回复:]
字符串长度限定6位以内,应该可以吧。
[/Quote]

这样理论上可以。26个字母,排列6个,26^6+26^5+26^4+26^3+26^2+26个,数量<4294967295个。
sunware 2008-06-03
  • 打赏
  • 举报
回复
字符串限定为小写字母吗?
blazingfire 2008-06-03
  • 打赏
  • 举报
回复
不行了,字符串能达的个数据可以是无限个。
而整形数就少得多了
robin100 2008-06-03
  • 打赏
  • 举报
回复
字符串长度限定6位以内,应该可以吧。
sunware 2008-06-03
  • 打赏
  • 举报
回复
关键要看你的字符串有多长了.如果太长,那么是找不到这么大的整数的.
xgliaotao 2008-06-03
  • 打赏
  • 举报
回复
取ASCII码值吗
gzmhero 2008-06-03
  • 打赏
  • 举报
回复
仅仅按你上面的描述是做不到的。
整数是(32位):4294967295个
字符串(26个):任意组合,一定大于4294967295个,做不到一对一,所以,你的描述是不可能的。
robin100 2008-06-03
  • 打赏
  • 举报
回复
多谢大家,分太少,我明天再加点分。
zzlingaaa 2008-06-03
  • 打赏
  • 举报
回复
6个都是小写字母,0..25或者1..26,每个字母用5位就可以表示,5X6才30位,一个整数32位,还节约两位出来

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧