我正在寻找一种在 Swift 中压缩 Unicode 字符串的算法。我将压缩的字符串相对较小(不超过 160 个字符)。
我发现这里已经实现了 LZW 压缩。我复制粘贴了适用于 ASCII 字符的代码,但是一旦我添加了一些 Unicode 字符,我就fatal error: unexpectedly found nil while unwrapping an Optional value
压缩了一段时间,result.append(dict[w]!)
我的猜测是该算法不支持 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
}
我可以让算法工作,但该解决方案需要太多的计算时间和内存。