我是Swift的新手。我想知道如何GZIP整数数组。如果你能提供一个例子,我将不胜感激。
假设我有一个包含Int16整数的数组,如下所示。请解释如何压缩它然后解压缩gzip压缩字节。
let array:[Int16] = [1,2,3,4,5]
谢谢!
这是我尝试过的,但结果非常奇怪。
代码:
let array: [Int16] = [1,2,3,4,5]
let arrayData = Data(fromArray: array)
let compData = try! arrayData.gzipped()
let decomp_array = try! compData.gunzipped()
let array_1: [Int16] = decomp_array.toArray(type: Int16.self)
print("array: \(array)")
print("arrayData: \(arrayData)")
print("compData: \(compData)")
print("decomp_array: \(decomp_array)")
print("array_1: \(array_1)")
extension Data {
init<T>(fromArray values: [T]) {
var values = values
self.init(buffer: UnsafeBufferPointer(start: &values, count:
values.count)) }
func toArray<T>(type: T.Type) -> [T] {
return self.withUnsafeBytes {
[T](UnsafeBufferPointer(start: $0, count:
self.count/MemoryLayout<T>.stride))
}
}
}
结果:
array: [1, 2, 3, 4, 5]
arrayData: 10 bytes
compData: 30 bytes
decomp_array: 10 bytes
array_1: [1, 2, 3, 4, 5]
更新
我现在在gzip / gunzip之后有正确的结果,但为什么压缩数据是30个字节(比行数据大3倍)?