【发布时间】:2014-01-06 14:59:42
【问题描述】:
我正在制作一个应用程序,其中涉及生成世界的种子,而某些游戏允许您为该种子提供文本。我想知道如何将字符串“转换”为整数。
一种简单的方法是使用所有字符的 ASCII 值并将它们附加到一个字符串中,然后将其解析为一个整数,但这严重限制了字符串的大小。你怎么能用一个更大的字符串来做到这一点?
编辑:64 位不是 32
【问题讨论】:
-
我建议对字符串字节进行加密哈希。
我正在制作一个应用程序,其中涉及生成世界的种子,而某些游戏允许您为该种子提供文本。我想知道如何将字符串“转换”为整数。
一种简单的方法是使用所有字符的 ASCII 值并将它们附加到一个字符串中,然后将其解析为一个整数,但这严重限制了字符串的大小。你怎么能用一个更大的字符串来做到这一点?
编辑:64 位不是 32
【问题讨论】:
我会打电话给String.hashcode()。标准的String.hashcode() 函数利用目标字符串中的所有字符并提供良好的分散性。
我唯一要质疑的是 32 位种子是否足够。 可能意味着您的世界生成器最多可以生成 232 个不同的世界。
【讨论】:
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;
}
【讨论】:
将字符串转换为整数的标准方法是使用 Integer.parseInt(String); 您将字符串传递给它,它会将字符串转换为 int。试试看,让我知道!
【讨论】:
Integer.parseInt("abcdefgh13uhfds")会发生什么?