这个难吗???如何将一个字符串转化成一个唯一整数? 字符串长度在2到10位左右,包含小写字母与数字。用hashCode()方法可能出现重复值。有无其他方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 hashCode返回int -2^31->2^31-1 (-2147483648->2147483647)而10位字符 (10+26)^10=3656158440062976所以至少得是long -2^63->2^63-1 (-9223372036854775808->9223372036854775807)自己做一个hash算法吧 已有一些人员帐号,字母加数字的。现在整合新应用,需要转为整型提供给新应用。自己做hash如何保证不重复?算法学的不好 。。 用摘要算法就可以了吧,java 的安全包里有提供相关类的,具体不太清楚 在数据库中建一个表 create table t1( id int identity(1,1) not null, name varchar(100) null,primary key(id))然后把你说的那些帐号插入到这个表中,这样,数据库就自动生成一个ID,且肯定是不重复的,你看是不是能满足你的要求 我还是倾向于使用算法解决.因为每周要同步这些帐号.如果放到表里生成ID,下次增加或删除了一些帐号,需要对照该表才可以生成新ID.比较复杂.另外,中文名是否可以转成整型?3个字的名字加一位区分重名位,13位还是超出整型了. victorppy(键盘上的鱼) ,必须保证每次转换都要得到同样的值.你的方法... long m=0;long step=1;for(int i=0;i<s.length();i++){ char ch = s.charAt(i); //把ch转为整数 int n = toInt(ch); m+=step+n; step *= 256; //要超过最大的n} long m=0;long step=1;for(int i=0;i<s.length();i++){ char ch = s.charAt(i); //把ch转为整数 int n = toInt(ch); m+=step*n; step *= 256; //要超过最大的n} 如果写hashCode()的话不大可能完全没有重复的。只能减少重复,不能消灭重复。 根据楼主的情况,我猜测是做帐号密码的存放这一类问题的算法.记住一个原则,加密算法的不可逆和加密后的可重复性!如果飞要唯一性,可将这个字符串的没一位按ASICC码转换(数字也看成字符),一位变三位不足前补零.再对数字串做加密算法 楼上的方法不错,我也刚刚想到,不过再对数字做加密算法不就又回不来了吗,如果只需要按照楼主的需求的话,直接采用asicc就可以了 每一位都按ascii转换,如果5位帐号不就3*15=15位了?况且我还有10位帐号的情况如何保证是整型?cu653的方法不知道可行否,试试 对呀,自己给hash表一个可以产生唯一数字的算法啊! 如果楼主的目的只是加密用户名密码,且没有什么找回遗失密码功能的情况,还是用MD5之类的信息摘要,(当然如果字符串长度不定,摘要仍然可能重复,即使可能性非常小,可以忽略)否则信息摘要(包括hashCode)是不可逆的,与类似压缩/解压缩的加密/解密不同 问个问题,估计谁都知道的简单问题 在线等待,一个日期格式的奇怪错误 一个关于session的题 有去过北京达内公司培训的么?来谈谈感想 请问怎么创建同心的正方形??? System.out.flush();是什么意思呢? 初学JAVA想写一个时钟。。不会。。 一个关于C/S编程的问题 用纯Java如何获得本机CPU的频率?多谢了... java 点击按钮之后键盘事件无效 java的编译问题,父类更改,子类一定要重新编译吗? JAVA如何读写WORD等OFFICE系列文件,还有PDF电子书文件。
然后把你说的那些帐号插入到这个表中,这样,数据库就自动生成一个ID,且肯定是不重复的,你看是不是能满足你的要求
如果放到表里生成ID,下次增加或删除了一些帐号,需要对照该表才可以生成新ID.比较复杂.
另外,中文名是否可以转成整型?
3个字的名字加一位区分重名位,13位还是超出整型了.
long step=1;
for(int i=0;i<s.length();i++)
{
char ch = s.charAt(i);
//把ch转为整数
int n = toInt(ch);
m+=step+n;
step *= 256; //要超过最大的n
}
long step=1;
for(int i=0;i<s.length();i++)
{
char ch = s.charAt(i);
//把ch转为整数
int n = toInt(ch);
m+=step*n;
step *= 256; //要超过最大的n
}
只能减少重复,不能消灭重复。
不过再对数字做加密算法不就又回不来了吗,
如果只需要按照楼主的需求的话,直接采用asicc就可以了
如何保证是整型?
cu653的方法不知道可行否,试试
,(当然如果字符串长度不定,摘要仍然可能重复,即使可能性非常小,可以忽略)否则信息摘要(包括hashCode)是不可逆的,与类似压缩/解压缩的加密/解密不同