Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

binary-sortable-hash

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

binary-sortable-hash

Hash an array of numbers into a sortable(ish) binary number.

  • 0.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

binary-sortable-hash

Hash arrays of numbers into a binary string from which you can reconstruct the original values, with configurable precision loss. The generated hashes sort well, so similar input values cause large shared prefixes in hashes. (as seen in geohashing)

sortable.encode([0]) === '011111111111111111111111111111111111111111111111111111111111';
sortable.decode(011111111111111111111111111111111111111111111111111111111111, 1) === -8.673617379884035e-17
sortable.encode([10, 11, -10]) === '110001001001110110011001100100001011100110001001100110011011';

build status

Usage

Hash a lat/lon array representing Röcken Germany

[10, -10, 10] and then restore it, using different hash sizes.

var sortable = require('sortable-hash');

var rocken = {lat: 51.2408, lon: 12.1161}
//normalize scalars to +-100
var normalized = [100*rocken.lat/180, 100*rocken.lon/90]

var hash = sortable.encode(normalized)
// => '110010010010000100101111010001010001001110011100001100111111'

sortable.decode(hash, 2);
// => [ 51.24080015346408, 12.116099959239364 ]

var lowerFidelityHash = sortable.encode(normalized, 10)
// => 1100100100
sortable.decode(lowerFidelityHash, 2)
// => [50.625, 14.0625]

var hexadecimalHash = parseInt(hash, 2).toString(16)
// => c9212f45139c300 (limited precision beyond 53bits)

note: If you need precision when converting integers above 53 bits consider using bigint

API

sortable.encode(values[, options])

Hash the array values, which may only contain Numbers in the range of [-100, 100].

options can either be an object with these possible keys:

  • precision: Number of bits (read: length) of the resulting binary hash

or a Number, in which case it sets options.precision.

sortable.decode(string, options)

Decode string into an Array of Numbers.

options can either be an object with these possible keys:

  • num: number of elements initially passed to hash.encode. (required)

Or a Number, in which case it sets options.num

Installation

With npm do:

$ npm install binary-sortable-hash

Kudos

This is the idea of geohashes generalized for use with all numeric data and numbers of input fields.

binary-sortable-hash is a derivative of the awesome sortable-hash by @juliangrubber

Keywords

FAQs

Package last updated on 04 May 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc