Here you can find the source of hashFNV32(int val)
Parameter | Description |
---|---|
val | The value to hash. |
public static int hashFNV32(int val)
//package com.java2s; /**/* w w w . j a v a2s .c o m*/ * Copyright (c) 2010 Yahoo! Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. See accompanying * LICENSE file. */ public class Main { private static final int FNV_OFFSET_BASIS_32 = 0x811c9dc5; private static final int FNV_PRIME_32 = 16777619; /** * 32 bit FNV hash. Produces more "random" hashes than (say) String.hashCode(). * * @param val The value to hash. * @return The hash value */ public static int hashFNV32(int val) { // from http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash int hashVal = FNV_OFFSET_BASIS_32; for (int i = 0; i < 4; i++) { int octet = val & 0x00ff; val = val >> 8; hashVal = hashVal ^ octet; hashVal = hashVal * FNV_PRIME_32; } return Math.abs(hashVal); } }