मैं एक माइक्रो जो सीहैश एल्गोरिदम 2 बाइट-मूल्यों
मेंप्रोग्राम किया जाता के साथ एक इलेक्ट्रॉनिक परियोजना पर काम कर रहा हूँ करने के लिए 16 बाइट-मान मैप करने के मैं कुछ आईडी और में उसके संबंधित जानकारी स्टोर करने की जरूरत है एक फ्लैश मेमोरी (एसडी)। ये आईडी 16 बाइट लंबी हैं इसलिए 2^128 संभावित मान हैं। हालांकि वे 16 बाइट हैं, केवल 50000 (अद्वितीय) मानों का उपयोग किया जाएगा। एसडी में सभी संभावित (2^128) आईडी स्टोर करना शारीरिक रूप से असंभव है।
मैं केवल 50000 उपयोग किए गए मानों को स्टोर कर सकता हूं लेकिन फिर मुझे उन सभी को खोजने के लिए उन सभी को (सबसे बुरी तरह) पार करना होगा। इसके अलावा, उनमें से प्रत्येक के लिए 16-बाइट मान तुलना की गणना की जानी चाहिए जो इसे धीमा कर देती है।
तो मुझे लगता है कि मुझे किसी प्रकार का (हैश?) फ़ंक्शन चाहिए जो 2^128 मानों को 50000 (मानचित्र 16 बाइट्स से 2 बाइट्स) पर मैप करता है। यह स्पष्ट है कि कुछ मूल मान एक ही मूल्य/अनुक्रमणिका पर मैप करेंगे। विचार यह है कि जब मुझे आईडी मिलती है, तो मैं एक हैश फ़ंक्शन लागू करता हूं जो मुझे 0 और ~ 50000 (0-65535) के बीच एक सूचकांक देता है। उस इंडेक्स के साथ मैं सीधे एसडी सेक्टर तक पहुंच सकता हूं जिसमें आईडी और इसकी संबंधित जानकारी संग्रहीत की जाती है। जैसा कि मैंने इंगित किया है, वह सूचकांक स्मृति की स्थिति को संदर्भित करेगा जहां विभिन्न आईडी एक ही इंडेक्स मूल्य पर मैप किए जाने वाले कुछ अलग-अलग आईडी के कारण सह-अस्तित्व में रहेंगे। मुझे सही आईडी मिलनी होगी, लेकिन 50000 मूल के बजाय इसकी तुलना केवल कुछ ही होगी।
किसी भी विचार/राय की वास्तव में सराहना की जाएगी।
अग्रिम धन्यवाद।
आप "हैश टेबल" की अवधारणा को फिर से शुरू कर रहे हैं - इसे Google। – user4815162342
बस सभी बाइट्स जोड़ें? –
16 बिट चेकसम या हैश के साथ कुंजी को हश करें। मेरा पहला शॉट सीआरसी 16 होगा। –