如何在Swift中{GGIP一个整数数组

时间:2017-06-16 00:15:03

标签: swift gzip

我是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倍)?

0 个答案:

没有答案