मेरे पास मेरे आईफोन प्रोजेक्ट में एक HTTP कनेक्टर है और प्रश्नों में फाउलर-नोल-वो (एफएनवी) हैश का उपयोग कर उपयोगकर्ता नाम से एक पैरामीटर सेट होना चाहिए।उद्देश्य-सी: फाउलर-नोल-वो (एफएनवी) हैश कार्यान्वयन
मैं इस समय काम कर रहे एक जावा कार्यान्वयन है, यह कोड है:
int64_t fnv_prime = 0x811C9DC5;
int64_T hash = 0;
for (int i=0; i < [myString length]; i++)
{
hash *= fnv_prime;
hash ^= [myString characterAtIndex:i];
}
यह स्क्रिप्ट मुझे नहीं देता:
long fnv_prime = 0x811C9DC5;
long hash = 0;
for(int i = 0; i < str.length(); i++)
{
hash *= fnv_prime;
hash ^= str.charAt(i);
}
अब iPhone पक्ष पर, मैं इस किया था उसी परिणाम में जावा एक है।
हैश = 0
हैश = 100 (पहले अक्षर है "d")
हैश = +१८६५२६१३०० (हैश = 100 और fnv_prime के लिए = -:
पहले पाश में, मैं यह मिलता है 2128831035 जावा में जैसे)
क्या कोई मुझे कुछ याद कर रहा है?
मदद के लिए अग्रिम धन्यवाद!
जावा में ओब्जे-सी के रूप में मुझे प्राइम = -2128831035 के लिए एक ही मान मिलता है जब मैं "0x811C9DC5L" डालता हूं तो मुझे मूल्य = 2166136261 – Dough
मिलता है आपको ओबज-सी में -2128831035 नहीं मिलना चाहिए। क्या आप वाकई इस मूल्य को प्रिंट करने के बारे में एक आर्टेफैक्ट नहीं हैं? (यानी आपने अपने 'printf() '? –
में"% lld "या"% d "का उपयोग किया था और एक सुराग है कि -2128831035 सही संख्यात्मक मान नहीं है: यह प्रमुख नहीं है! -2128831035 = - (3 * 5 * 17 * 101 * 82657) –