text: public virtual long Hash1(char[] carray){long p = 1099511628211L;long hash = unchecked((long)0xcbf29ce484222325L);for (int i = 0; i < carray.Length; i++){char d = carray[i];hash = (hash ^ (d & 0x00FF)) * p;hash = (hash ^ (d >> 8)) * p;}return hash;}