1 回答

TA貢獻2011條經(jīng)驗 獲得超2個贊
我相信你要找的對象是Data. 它是一個可以表示任何數(shù)據(jù)并保存原始字節(jié)緩沖區(qū)的對象。
對于您的特定情況,您需要將 double 值數(shù)組轉換為數(shù)據(jù),可以這樣做:
let data: Data = doubleArray.withUnsafeBufferPointer { Data(buffer: $0) }
現(xiàn)在要從中獲取十六進制字符串,Data我建議您參考其他一些帖子。
添加此答案代碼,您應該能夠通過執(zhí)行以下操作來構建您的十六進制字符串
let hexString = data.hexEncodedString()
所以把它放在一起,你會這樣做:
extension Data {
struct HexEncodingOptions: OptionSet {
let rawValue: Int
static let upperCase = HexEncodingOptions(rawValue: 1 << 0)
}
func hexEncodedString(options: HexEncodingOptions = []) -> String {
let format = options.contains(.upperCase) ? "%02hhX" : "%02hhx"
return map { String(format: format, $0) }.joined()
}
}
func generateRandomDoubleBufferHexString(count: Int, randomParameters: (min: Double, max: Double, percision: Int) = (0.0, 1.0, 100000)) -> String {
func generateRandomDouble(min: Double = 0.0, max: Double = 1.0, percision: Int = 100000) -> Double {
let scale: Double = Double(Int(arc4random())%percision)/Double(percision)
return min + (max-min)*scale
}
var doubleArray: [Double] = [Double]() // Create empty array
// Fill array with random values
for _ in 0..<count {
doubleArray.append(generateRandomDouble(min: randomParameters.min, max: randomParameters.max, percision: randomParameters.percision))
}
// Convert to data:
let data: Data = doubleArray.withUnsafeBufferPointer { Data(buffer: $0) }
// Convert to hex string
return data.hexEncodedString()
}
添加回答
舉報