我正在製作一個涉及種子生成世界的應用程序,並且一些遊戲可讓您爲該種子提供文本。我想知道你會如何「轉換」一個字符串爲整數。如何將字符串轉換爲64位整數?
一個簡單的方法是使用所有字符的ASCII值並將它們追加到一個字符串中,然後將該字符串解析爲一個整數,但這嚴重限制了字符串的大小。你將如何能夠用更大的字符串來做到這一點?
編輯:64位不是32
我正在製作一個涉及種子生成世界的應用程序,並且一些遊戲可讓您爲該種子提供文本。我想知道你會如何「轉換」一個字符串爲整數。如何將字符串轉換爲64位整數?
一個簡單的方法是使用所有字符的ASCII值並將它們追加到一個字符串中,然後將該字符串解析爲一個整數,但這嚴重限制了字符串的大小。你將如何能夠用更大的字符串來做到這一點?
編輯:64位不是32
我只想叫String.hashcode()
。標準String.hashcode()
函數利用目標字符串中的所有字符並提供良好的分散性。
我唯一會質疑的是32位種子是否足夠。它可能是可能是意味着你的世界發電機最多可以產生不同的世界。
不知道爲什麼我寫的32位我的意思是64:P – Ryxuma
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」)'會發生什麼? –
http://stackoverflow.com/questions/5688042/how-to-convert-a-java-string-to-an-ascii-byte-array – SaggingRufus
我會建議一個字符串字節的加密散列。 –