सर्वर आइटम की सूची के लिए alphanumerical आईडी भेजता है। उसी समय, पुनरावर्तक दृश्य getItemId (स्थिर आईडी के लिए आवश्यक) को लंबा लौटाना चाहिए। स्ट्रिंग को अद्वितीय लंबे समय तक कैसे एन्कोड करें?

0
Yarh 16 अप्रैल 2020, 20:07

1 उत्तर

सबसे बढ़िया उत्तर

संक्षिप्त उत्तर: आप शायद नहीं कर सकते। तब तक नहीं जब तक कि आईडी कम होने की गारंटी न हो।

एक लंबा 8 बाइट्स का उपयोग करता है, इसलिए इसमें 2⁶⁴ (लगभग 1.8×10¹⁹) विभिन्न मान हो सकते हैं। तो यह केवल उस संख्या के तार का प्रतिनिधित्व कर सकता है। (कबूतर छेद सिद्धांत का परिणाम।)

हालांकि, यदि आईडी में केवल मूल ASCII अक्षर हैं (चलो अपर केस मान लें) और अंक - 36 संभावनाएं - और 13 वर्ण लंबे हैं, तो 36¹³ (लगभग 1.7×10²⁰) अलग-अलग तार हैं। यह 2⁶⁴ से अधिक परिमाण का एक क्रम है, इसलिए उनमें से कुछ को उसी लंबे मान पर मैप करना होगा।

(वास्तव में, प्रत्येक लॉन्ग औसतन लगभग 10 आईडी पर मैप करेगा - और इससे भी अधिक यदि आप कम वर्णों वाले स्ट्रिंग्स, और/या वर्णों की एक बड़ी श्रेणी शामिल करते हैं।)

इसलिए जब तक कि आईडी की सीमा सीमित न हो, आपको दूसरा तरीका खोजना होगा।

0
gidds 16 अप्रैल 2020, 22:30