gpt4 book ai didi

compression - 原生 Lua 中的高效可变字节数组

转载 作者:行者123 更新时间:2023-12-04 03:02:30 27 4
gpt4 key购买 nike

我正在尝试在原生 Lua 中高效实现 LZ77 解码器(即没有 C 库,并且不依赖于非核心 Lua 库) - 参见 liblzg .

对于加载和解析二进制文件,Lua 字符串可以完美运行,并且具有良好的性能(例如使用 s:byte(k) 方法)。然而,对于创建解码的输出数据,字符串并不是非常理想的,因为它们是不可变的,并且当输出变大时,字符串连接往往会花费很多时间。

解码器必须能够:

  • 一次向输出添加一个字节(最多数百万次)
  • 从输出缓冲区读取(或多或少随机访问)

  • 什么是最好的选择?输出数据的大小是事先知道的,因此可以预先分配。

    最佳答案

    听起来对 table.concat 来说是一份完美的工作
    您的输出只是一个字节表。

    当您需要复制时,您可以像往常一样复制表格。
    例如:

    for i=#output-5,9 do output[#output+1]=output[i] end

    当您最终完成输出流时,使用 str=table.concat(output) 将其转换为字符串。

    关于compression - 原生 Lua 中的高效可变字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265952/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com