xxHash framework in Swift

xxHash-Swift

Framework include xxHash 32/64 bit functions.

Original xxHash algorithm created by Yann Collet.

Install

Carthage

github "daisuke-t-jp/xxHash-Swift"

CocoaPods

use_frameworks!

target 'target' do
pod 'xxHash-Swift'
end

Usage

Import framework

import xxHash_Swift

Generate Hash(One-shot)

32bit Version

let hash = xxHash32.digest("123456789ABCDEF")
// hash -> 0x576e3cf9

// Using seed.
let hash = xxHash32.digest("123456789ABCDEF", seed: 0x7fffffff)
// hash -> 0xa7f06f9d

64bit Version

let hash = xxHash64.digest("123456789ABCDEF")
// hash -> 0xa66df83f00e9202d

// Using seed.
let hash = xxHash64.digest("123456789ABCDEF", seed: 0x000000007fffffff)
// hash -> 0xe8d84202a16e482f

Generate Hash(Streaming)

32bit Version

// Create xxHash instance
let xxh = xxHash32() // if using seed, e.g. "xxHash(0x7fffffff)"

// Get data from file
let bundle = Bundle(for: type(of: self))
let path = bundle.path(forResource: "alice29", ofType: "txt")!
let data = NSData(contentsOfFile: path)
let array = [UInt8](data! as Data)

let bufSize = 1024
var index = 0
var flag = true


repeat {
    // Prepare buffer
    var buf = [UInt8]()
    for _ in 0..<bufSize {
        buf.append(array[index])
        index += 1
        if index >= array.count {
            flag = false
            break
        }   
    }
 
    // xxHash update
    xxh.update(buf)

} while(flag)

let hash = xxh.digest()
// hash -> 0xafc8e0c2

64bit Version

// Create xxHash instance
let xxh = xxHash64() // if using seed, e.g. "xxHash(0x0000007fffffff)"

// Get data from file
let bundle = Bundle(for: type(of: self))
let path = bundle.path(forResource: "alice29", ofType: "txt")!
let data = NSData(contentsOfFile: path)
let array = [UInt8](data! as Data)

let bufSize = 1024
var index = 0
var flag = true


repeat {
    // Prepare buffer
    var buf = [UInt8]()
    for _ in 0..<bufSize {
        buf.append(array[index])
        index += 1
        if index >= array.count {
            flag = false
            break
        }   
    }
 
    // xxHash update
    xxh.update(buf)

} while(flag)

let hash = xxh.digest()
// hash -> 0x843c2c4ccfbfb749

GitHub