Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@bensjoberg/fnv1a

bensjoberg90MIT3.0.0TypeScript support: included

FNV-1a non-cryptographic hash function

fnv1a, fnv-1a, fnv1, fnv-1, fnv, algorithm, hash, hashing, string, function, fowler–noll–vo, fowler, noll, vo, unicode, bigint

readme

Forked

Forked from https://github.com/sindresorhus/fnv1a and ported to CommonJS. (I really want to move to ESM, but my work has a couple projects that just aren't ready for it yet. 😢)

fnv1a

FNV-1a non-cryptographic hash function

FNV-1a has outstanding distribution and collisions are rare.

FNV hashes are designed to be fast while maintaining a low collision rate. The FNV speed allows one to quickly hash lots of data while maintaining a reasonable collision rate. The high dispersion of the FNV hashes makes them well suited for hashing nearly identical strings such as URLs, hostnames, filenames, text, IP addresses, etc.

Install

$ npm install @sindresorhus/fnv1a

Usage

import fnv1a from '@sindresorhus/fnv1a';

fnv1a('🦄🌈', {size: 32});
//=> 2868248295n

fnv1a('🦄🌈', {size: 128});
//=> 13487074350300261116944693128525960095n

Number(fnv1a('🦄🌈', {size: 32}));
//=> 2868248295

API

fnv1a(string, options?)

Returns the hash as a positive BigInt.

If you need it as a number, use 32 as size and wrap the return value in Number(…).

options

Type: object

size

Type: number\ Values: 32 | 64 | 128 | 256 | 512 | 1024\ Default: 32

The bit size of the hash.

  • djb2a - DJB2a non-cryptographic hash function
  • sdbm - SDBM non-cryptographic hash function