เรารู้ว่าค่าสูงสุดของจำนวนเต็มคือ 2^31 - 1 และค่าสูงสุดของความยาวคือ 2^63 - 1
นี่เป็นความจริงไม่ว่าจะเป็นเครื่อง 32 บิตหรือ 64 บิต
โดยทั่วไปเมื่อเราต้องการใช้ตัวเลขที่มากกว่าค่าสูงสุดของจำนวนเต็มเราจะใช้นานในการดำเนินการ
แต่ถ้าเราพบตัวเลขที่ใหญ่กว่าค่าสูงสุดของความยาวล่ะ?
คนใหญ่
สถานการณ์นี้จะยังคงเกิดขึ้น Java จัดให้มีคลาส BigInteger สำหรับการใช้งานจำนวนมาก เมื่อใช้งานคุณจะต้องทำอินสแตนซ์วัตถุ BigInteger ให้เรียกใช้วิธีการทำงานเพื่อเพิ่มและการลบ
นี่คือตัวอย่างที่จะอธิบาย
การดำเนินการ uuid
เรารู้ว่า Anroid_ID มักใช้ในอุปกรณ์ Android เพื่อแสดงถึงความเป็นเอกลักษณ์ของอุปกรณ์
โดยทั่วไปแล้วรหัสต่อไปนี้จะถูกเรียกให้สร้างหมายเลขอุปกรณ์เป็นครั้งแรกหลังจากติดตั้งแอพ
String private_id = settings.secure.getString (getContext (). getContentResolver (), การตั้งค่า. secure.android_id);
จากนั้นสตริงจะถูกเก็บไว้ในระบบไฟล์หรือฐานข้อมูลผ่านการคงอยู่และตัวบ่งชี้เช่นผู้ใช้ที่ใช้งานประจำวันสามารถระบุได้ตามสิ่งนี้
ค่าของมันมักจะเป็นเลขฐานสิบหกตัวอย่างเช่น
AF84C9117B6C98D2
แปลงเป็นทศนิยมคือ
12647454730485537000
สิ่งนี้เกินช่วงของค่าสูงสุดยาว 9223372036854776000
จากนั้นเราต้องการเข้ารหัสมันขึ้นอยู่กับ Android_ID ดั้งเดิมเช่นการเพิ่มหมายเลขสุ่มเพื่อเพิ่มขึ้น
String private_id = การตั้งค่า. secure.getString (getContext (). getContentResolver (), การตั้งค่า. secure.android_id); BigInteger Androidid = ใหม่ BigInteger (Private_id, 16) สุ่มสุ่ม = new Random) 10)); สตริง hex = result.toString ();