우리는 정수의 최대 값이 2^31-1이고 최대 값은 2^63-1입니다.
32 비트이든 64 비트 기계이든 이건 사실입니다.
일반적으로, 정수의 최대 값보다 더 큰 숫자를 작동시키고 싶을 때, 우리는 그것을 수행하기 위해 오랫동안 사용합니다.
그러나 최대 값의 최대 값보다 큰 숫자를 만나면 어떻게 될까요?
Biginteger
이 상황은 여전히 발생합니다. Java는 매우 많은 수의 운영을위한 Biginteger 클래스를 제공합니다. 그것을 사용할 때는 BigInteger 객체를 인스턴스화하고 추가 및 뺄셈을 위해 작업 방법을 호출해야합니다.
다음은 설명 할 예입니다
작동 UUID
우리는 Android 장치에서 ANROID_ID가 종종 장치의 독창성을 나타내는 데 사용된다는 것을 알고 있습니다.
일반적으로 앱을 설치 한 후 처음으로 장치 번호를 생성하도록 다음 코드가 호출됩니다.
String private_id = settings.secure.getString (getContext (). getContEntResolver (), settings.secure.android_id);
그런 다음 문자열은 끈기를 통해 파일 시스템 또는 데이터베이스에 저장되며 매일 활성 사용자와 같은 표시기를 이에 따라 식별 할 수 있습니다.
예를 들어 그 값은 일반적으로 16 진수입니다
AF84C9117B6C98D2
소수점으로 변환하십시오
12647454730485537000
이것은 최대 값의 긴 범위 9223372036854776000을 초과했습니다.
그런 다음 원래 Android_id를 기반으로 단순히 임의의 숫자를 추가하여 올라갈 무작위 숫자를 암호화하려고합니다.
string private_id = settings.secure.getString (getContext (). getContentResolver (), settings.secure.android_id); biginteger androidid = new biginteger (private_id, 16); random random = new random (); biginteger result = androidid.add (new biginteger (10000)); result.toString ();