UInt256
一个用 Swift 4 编写的 UInt256 库,受 CryptoCoinSwift/UInt256 启发
特性
此库提供了一个满足 Swift 的 FixedWidthInteger 和 UnsignedInteger 协议的 UInt256 结构体。根据苹果公司的说法,这两个是 UInt 成员必要的高级协议:[在此处](https://github.com/apple/swift-evolution/blob/master/proposals/0104-improved-integers.md#proposed-solution)
它支持一组完整的算术运算,以及与其他 UInt 系列成员(如 UInt64
、UInt32
、UInt8
等)常见的属性和函数。该库利用了 Karatsuba 快速乘法 算法、征服与分治 除法算法、巴雷特算法 以及其他高效算法。其他特性还包括整数字面量表示(ExpressibleByIntegerLiteral
)、默认描述(CustomStringConvertible
)和 Hashable
。
该库完全用 Swift 4 编写。它可以作为 Swift 包、Carthage 包 或 CocoaPod 安装。还包括一个作为测试平台的游戏场。
请随时在此处提交新功能请求并报告问题。
请使用游戏场来尝试所有功能!
Swift 协议遵循
主要结构体 UInt256 严格遵循以下协议
- FixedWidthInteger
- unsignedinteger(无符号整数)
- BinaryInteger(二进制整数)
- Numeric(数字)
- Comparable(可比较的)
- Equatable(等价的)
- CustomStringConvertible(自定义字符串可描述的)
- Hashable(可哈希的)
需求
- iOS 8.0+ / macOS 10.10+
- Xcode 8.0+
- Swift 4
通讯
如果您需要任何帮助或有功能请求,请在此GitHub上打开一个问题;如果您发现了一个错误或想要协助开发,请提交一个pull请求。所有贡献都受欢迎!
安装
Carthage
首先,确保已安装Carthage
brew update
brew install carthage
要将此库集成到您的Xcode项目中,只需将以下行放入您的carfile
github "mryu87/UInt256"
最后,运行carthage update
以构建框架,并将构建的框架(无论是UInt256_iOS.framework
还是UInt256_macOS.framework
)拖入您的Xcode项目中
Swift 包管理器
此库也支持 Swift 包管理器。如果您已经设置了swift包配置,请将以下行添加到您的 Package.swift
dependencies: [
.package(url: "https://github.com/mryu87/UInt256.git", from: "4.0.0")
]
CocoaPods
按照其官方指南安装 CocoaPods。
要使用 CocoaPods 将 UInt256 集成到你的 Xcode 项目中,请在你的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'UInt256', :git => 'https://github.com/mryu87/UInt256.git'
end
然后运行 pod install
。
手动安装
你还可以手动将这个库添加到你的项目中。
在终端中,在你的顶级项目目录下,通过运行以下命令将此库添加为 git submodule
git submodule add https://github.com/mryu87/UInt256.git
请确保 Xcode 打开,在 Finder 中转到你的新的 UInt256
子目录,将 UInt256.xcodeproj
拖放到你的项目导航器的项目中。记得将框架嵌入到你的构建目标中。
下一步...
- 添加文档
- 考虑利用 GPU/Metal
- 基准测试
- 使 Uint256 符合 FixedWidthInteger
- 添加示例,最好是使用游乐场
- 添加 CocoaPods 支持
- 更多测试、测试覆盖率、边界情况、代码审查
- 自动化构建和测试运行
- Karatsuba 乘法
- 快速求模、除法和其它算法
许可证
此库按照 MIT 许可证发布。请参阅 LICENSE