2014-01-06 7 views
2

나는 세상을 생성하기위한 씨앗을 포함하는 응용 프로그램을 만들고 있으며 일부 게임에서는 그 씨앗에 텍스트를 제공 할 수 있습니다. 문자열을 정수로 변환하는 방법을 궁금합니다.문자열을 64 비트 정수로 변환하는 방법은 무엇입니까?

간단한 방법은 모든 문자의 ASCII 값을 사용하여 정수로 구문 분석 할 문자열에 추가하는 것이지만 문자열의 크기는 심각하게 제한됩니다. 큰 문자열로 어떻게이 작업을 수행 할 수 있습니까?

편집 : 64 비트 32

+0

http://stackoverflow.com/questions/5688042/how-to-convert-a-java-string-to-an-ascii-byte-array – SaggingRufus

+0

문자열의 바이트에 대한 암호화 해시를 제안합니다. –

답변

6

난 그냥 String.hashcode()를 호출 할 수 없습니다. 표준 String.hashcode() 함수는 대상 문자열의 모든 문자를 사용하며 분산이 잘됩니다.

제가 궁금한 것은 시드 32 비트만으로 충분할 것인지 아닌지입니다. 일 수도 있고은 세계 발전기가 최대 2 개의 다른 세계를 생성 할 수 있음을 의미합니다.

+0

왜 32 비트를 써야하는지 모르겠다. 64 : P – Ryxuma

3

Random의 임의 시드는 이상적으로는 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; 
} 
-1

문자열을 정수로 변환하기위한 표준 방법있는 Integer.parseInt (문자열)를 사용한다; 문자열을 this로 전달하면 String이 int로 변환됩니다. 그것을 시도하고 알려주세요!

+0

그렇다면 Integer.parseInt ("abcdefgh13uhfds")'를하면 어떻게 될까? –