我正在寻找一种在Swift中压缩Unicode字符串的算法。我将压缩的字符串相对较小(不超过160个字符)。
我发现LZW压缩已经实现here。我复制粘贴了与ASCII字符配合良好的代码,但是一旦我添加了一些Unicode字符,我在压缩时得到了fatal error: unexpectedly found nil while unwrapping an Optional value
,在result.append(dict[w]!)
行上我的猜测是算法没有' t支持unicode字符,因为dict[c]
未定义任何Unicode字符c
。
如何调整该算法以支持Unicode字符,还是应该尝试其他压缩方法?如果是的话,哪些?
修改
通过从
开始更改循环for i in 0 ..< 256
{
let s = String(UnicodeScalar(i))
dict[s] = i
}
到
for i in 0 ..< 0xFFFF
{
let s = String(UnicodeScalar(i))
dict[s] = i
}
我可以让算法工作,但是,该解决方案需要太多的计算时间和内存。