https://github.com/daisuke-t-jp/xxhash-swift
xxHash framework in Swift.
https://github.com/daisuke-t-jp/xxhash-swift
carthage cocoapods digest hash hash-functions ios linux macos swift swift-package-manager tvos xxhash
Last synced: 11 months ago
JSON representation
xxHash framework in Swift.
- Host: GitHub
- URL: https://github.com/daisuke-t-jp/xxhash-swift
- Owner: daisuke-t-jp
- License: mit
- Created: 2019-02-12T11:36:36.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-12-17T15:01:30.000Z (over 4 years ago)
- Last Synced: 2025-04-11T04:02:36.182Z (about 1 year ago)
- Topics: carthage, cocoapods, digest, hash, hash-functions, ios, linux, macos, swift, swift-package-manager, tvos, xxhash
- Language: Swift
- Homepage: https://cocoapods.org/pods/xxHash-Swift
- Size: 590 KB
- Stars: 31
- Watchers: 3
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
------

[](https://developer.apple.com/swift)
[](https://cocoapods.org/pods/xxHash-Swift)
[](https://github.com/Carthage/Carthage)
[](https://github.com/apple/swift-package-manager)

# Introduction
[**xxHash**](https://cyan4973.github.io/xxHash/) framework in Swift.
A framework includes XXH32/XXH64/XXH3-64/XXH3-128 functions.
Original xxHash algorithm created by [Yann Collet](https://github.com/Cyan4973).
# Requirements
- Platforms
- iOS 10.0+
- macOS 10.12+
- tvOS 12.0+
- Linux
- Swift 5.0
# Installation
## Carthage
`github "daisuke-t-jp/xxHash-Swift"`
## CocoaPods
```
use_frameworks!
target 'target' do
pod 'xxHash-Swift'
end
```
# Usage
## Import framework
```swift
import xxHash_Swift
```
## XXH32
### Generate digest(One-shot)
```swift
let digest = XXH32.digest("123456789ABCDEF")
// digest -> 0x576e3cf9
// Using seed.
let digest = XXH32.digest("123456789ABCDEF", seed: 0x7fffffff)
// digest -> 0xa7f06f9d
```
### Generate digest(Streaming)
```swift
// Create xxHash instance
let xxh = XXH32() // if using seed, e.g. "XXH32(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)! as Data
let bufSize = 1024
var index = 0
repeat {
var lastIndex = index + bufSize
if lastIndex > data.count {
lastIndex = index + data.count - index
}
let data2 = data[index..= data.count {
break
}
} while(true)
let digest = xxh.digest()
// digest -> 0xafc8e0c2
```
## XXH64
### Generate digest(One-shot)
```swift
let digest = XXH64.digest("123456789ABCDEF")
// digest -> 0xa66df83f00e9202d
// Using seed.
let digest = XXH64.digest("123456789ABCDEF", seed: 0x000000007fffffff)
// digest -> 0xe8d84202a16e482f
```
### Generate digest(Streaming)
```swift
// Create xxHash instance
let xxh = XXH64() // if using seed, e.g. "XXH64(0x000000007fffffff)"
// Get data from file
let bundle = Bundle(for: type(of: self))
let path = bundle.path(forResource: "alice29", ofType: "txt")!
let data = NSData(contentsOfFile: path)! as Data
let bufSize = 1024
var index = 0
repeat {
var lastIndex = index + bufSize
if lastIndex > data.count {
lastIndex = index + data.count - index
}
let data2 = data[index..= data.count {
break
}
} while(true)
let digest = xxh.digest()
// digest -> 0x843c2c4ccfbfb749
```
## XXH3-64
### Generate digest(One-shot)
```swift
let digest = XXH3.digest64("123456789ABCDEF")
// digest -> 0xfb28db77f56706e8
// Using seed.
let digest = XXH3.digest64("123456789ABCDEF", seed: 0x000000007fffffff)
// digest -> 0xced1ef1da8aa95ae
```
## XXH3-128
### Generate digest(One-shot)
```swift
let digest = XXH3.digest128("123456789ABCDEF")
// digest[0] -> 0x208cfe2ef00d2aaa
// digest[1] -> 0x9b72015eec4abbf3
// Using seed.
let digest = XXH3.digest128("123456789ABCDEF", seed: 0x000000007fffffff)
// digest[0] -> 0x50554db504518e64
// digest[1] -> 0xc8fb00b18f99658c
```
# Demo
There are demos.
- [iOS](https://github.com/daisuke-t-jp/xxHash-Swift/tree/master/demo/xxHashDemo-iOS)
- [macOS](https://github.com/daisuke-t-jp/xxHash-Swift/tree/master/demo/xxHashDemo-macOS)
- [tvOS](https://github.com/daisuke-t-jp/xxHash-Swift/tree/master/demo/xxHashDemo-tvOS)