我有一个包含16个元素的UInt
数组,我需要将它转换为16个字节的Data
对象。
我使用下面的代码进行转换,但是它将它转换为128个字节而不是16个字节。
let numbers : stride(from: 0, to: salt.length, by: 2).map() {
strtoul(String(chars[$0 ..< min($0 + 2, chars.count)]), nil, 16)
}
/*numbers is a [UInt] array*/
let data = Data(buffer: UnsafeBufferPointer(start: numbers, count:number.count))
/*Data returns 128 bytes instead of 16 bytes*/
请纠正我的错误。
答案 0 :(得分:3)
您无法将16 UInt
转换为16个字节。 UInt
在64位设备上长8个字节,在32位设备上长4个字节。您需要使用UInt8
s。
如果您输入了UInt
个数组作为输入,则无法将它们转换为UInt8
,但您可以转换它们:
let array: [UInt] = [1, 2, 3, 123, 255]
let array8Bit: [UInt8] = array.map{UInt8($0)}