2017-04-11 4 views
1

에 대한 정수 표현을 필요로하지만 난에 키우면 가능하면나는 어쩌면이 감각하지 않는 중포 기지 푸시 ID

내가 좋아하는 것 인 [해시]과 같은 방법으로 Firebase push id에 대한 정수 표현을 필요로 Hash이 만들어진 것과 같은 방법으로 Firebase push ID에서 Java Integer를 생성하십시오. 이것은 약간 실험적이지만 할 수 있는지 알고 싶었습니다.

내가 Firebase 푸시 id -Kh7JD01FqBpzfCt_dVX을 가지고 있고 해시 함수를 실행할 때마다 내가 해시 할 때마다 동일한 해시 문자열을 얻게된다고합니다.

그러나 나는 약간의 "정수"기능을 통해 -Kh7JD01FqBpzfCt_dVX를 실행 할 수 있다면 나는 것마다 나는 어떻게 그 같은 정수를 얻을 권리

참으로 나는 내가 2,147,483,647 범위 내에서 임의의 정수를 생성하고 희망 수있어 비 충돌. 하지만 위의 방법을 사용하면 덜 안전하다고 느낍니다.

+0

왜 해시의 각 문자를 8 진수로 변환하면 안 될까요? 해시 길이에 따라 큰 숫자 문자열로 끝나지 만 다른 방법으로는 정수로 변환 할 수 있습니다. 범위 (0, MAX_INT) – Merlevede

답변

1

Firebase push IDs can hold 2^120 unique values. 그것은 정수로 포착 할 수없는 범위입니다.

문자열의 hashCode()을 사용하면 동일한 숫자 (매번 long))가 제공되지만 해시 코드는 주어진 입력 문자열에 대해 고유하지 않을 수 있습니다. 동일한 해시를 제공 할 여러 문자열이 있습니다. 코드.

+0

정보를 주셔서 감사합니다. 잠시 기다려주십시오. Firebase ['runTransaction()'] (https://firebase.google.com/docs/database/android/read-and-write) 클라이언트는 키 값을 잠그고 하나씩 증가시켜 고유 한 정수를 얻은 다음 올바르게 사용합니다. 다음 클라이언트 그는 또한 증가하기 때문에 동일한 정수를 얻지 못할 것입니다. 고유 정수 생성기 팩토리처럼 느껴지십니까? 이제는 Push ID로 Integer를 저장할 수 있습니다. 이제 푸시 (Push) ID를 나타내는 정수를 만들었습니까 ?? 하지만 그 중 2,147,483,647 개만 만들 수있었습니다. 어떻게 생각해? –

+1

이 논리를 구현하는 방법에 대한 아이디어가있는 것 같습니다. 막히면, [붙어있는 곳을 재현하는 최소한의 코드]를 공유하십시오 (http://stackoverflow.com/help/mcve). –