java - 我需要一些方法来快速将 BigInt 转换为 Bytes 数组,就像在 java 中一样
问题描述
解决方案
我想我做了正确的扩展代码。
如果您发现任何错误,请写下。
extension BigInt {
public func serialize() -> Data {
var array = Array(BigUInt.init(self.magnitude).serialize())
if array.count > 0 {
if self.sign == BigInt.Sign.plus {
if array[0] >= 128 {
array.insert(0, at: 0)
}
} else if self.sign == BigInt.Sign.minus {
if array[0] <= 127 {
array.insert(255, at: 0)
}
}
}
return Data.init(bytes: array)
}
public init(_ data: Data) {
var dataArray = Array(data)
var sign: BigInt.Sign = BigInt.Sign.plus
if dataArray.count > 0 {
if dataArray[0] >= 128 {
sign = BigInt.Sign.minus
if dataArray.count > 1 {
if dataArray[0] == 255, dataArray.count > 1 {
dataArray.remove(at: 0)
} else {
dataArray[0] = UInt8(256 - Int(dataArray[0]))
}
}
}
}
let magnitude = BigUInt.init(Data.init(bytes: dataArray))
self .init(sign: sign, magnitude: magnitude)
}
}
推荐阅读
- android - 将圆形彩色背景应用于 Material PopupMenu 组件的正确方法是什么?
- python - SqlAlchemy - 使用编码时“没有编码的字符串参数”,“没有运算符匹配给定的名称和参数类型”
- c# - 无法取消订阅 Firebase 中的侦听器
- tcl - 如何在中断主 tcl 脚本时杀死后台进程?
- python - 使用python将列名写入txt文件
- matplotlib - Matplotlib UserWarning - 冗余定义的标记
- swift - SwiftUI - 在 ObservableObject 类/依赖注入中使用 EnvironmentObject
- java - 用于多个数据源的 Ingore flyway
- java - 在 com.amazonaws.services.sso.AWSSSOClientBuilder (Java) 中使用 AWSSSOClientBuilder 类失败
- multipartform-data - 我一直在尝试将上传的图片作为附件发送到电子邮件,但无法正常工作。这是我下面的代码