我正在创建一个涉及种子的应用程序来生成一个世界,而一些游戏可以让你为种子提供文本。我想知道如何将字符串转换为整数。
一种简单的方法是使用所有字符的ASCII值并将它们附加到一个字符串,然后将其解析为整数,但这严重限制了字符串的大小。你怎么能用更大的字符串做到这一点?
编辑:64位而不是32
答案 0 :(得分:6)
我会打电话给String.hashcode()
。标准String.hashcode()
函数使用目标字符串中的所有字符,并提供良好的分散。
我唯一要问的是32位种子是否足够。 可能意味着您的世界生成器最多可以生成2个 32 个不同的世界。
答案 1 :(得分:3)
Random
的随机种子可以至少为48位,理想情况下为64位。您可以像这样编写自己的哈希码。
public static long hashFor(String s) {
long h = 0;
for(int i = 0; i < s.length(); i++)
h = h * 10191 + s.charAt(i);
return h;
}
答案 2 :(得分:-1)
将String转换为Integer的标准方法是使用Integer.parseInt(String); 您将字符串传递给它,它会将String转换为int。试试吧,让我知道!