zbuff_core.lua 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --[[
  2. @module zbuff_core
  3. @summary zbuff的基础操作模块
  4. @version 1.0.0
  5. @date 2025.08.08
  6. @author 王棚嶙
  7. @usage
  8. 本文件为zbuff的基础操作模块,包含zbuff最常用的基础功能:
  9. 1. 缓冲区创建与初始化
  10. 2. 基础功能操作(读写)
  11. 3. 指针控制
  12. 4. 元信息查询
  13. 5. 高效数据查询(query接口)
  14. 本文件没有对外接口,直接在main.lua中require "zbuff_core"就可以加载运行
  15. ]]
  16. local function zbuff_core_task_func()
  17. log.info("zbuff_core", "启动核心功能演示")
  18. -- 创建1024字节的缓冲区
  19. local buff = zbuff.create(1024)
  20. log.info("zbuff_core", "缓冲区创建", "长度:", buff:len()) -- 打印缓冲区长度
  21. -- === 缓冲区创建与初始化演示 ===
  22. log.info("zbuff_core", "=== 缓冲区创建与初始化演示 ===")
  23. buff[0] = 0xAE -- 通过索引直接访问和修改数据(索引从0开始)
  24. log.info("zbuff_core", "索引访问示例", "buff[0] =", buff[0])
  25. -- === 基础读写操作演示 ===
  26. log.info("zbuff_core", "=== 基础IO操作演示 ===")
  27. --此处的读写操作只作为演示,具体的读取数据看后续的buff:query接口
  28. --buff:write()中的参数可以是任意类型,zbuff会自动进行类型转换,写入buff的数据,string时为一个参数,number时可为多个参数
  29. buff:write("123")
  30. log.info("zbuff_core", "写入字符串", "123")
  31. buff:write(0x12, 0x13, 0x13, 0x33)
  32. log.info("zbuff_core", "写入数值", "0x12, 0x13, 0x13, 0x33")
  33. buff:seek(5, zbuff.SEEK_CUR)
  34. log.info("zbuff_core", "指针当前位置", "向后移动5字节","当前位置:", buff:used())
  35. buff:seek(0)
  36. log.info("zbuff_core", "指针移动", "重置到开头")
  37. local data = buff:read(3)
  38. log.info("zbuff_core", "读取数据", "长度3:",data)
  39. -- === 缓冲区清除操作 ===
  40. log.info("zbuff_core", "=== 缓冲区清除操作 ===")
  41. buff:clear()
  42. log.info("zbuff_core", "清除操作", "全部清零")
  43. buff:clear(0xA5)
  44. log.info("zbuff_core", "清除操作", "填充0xA5")
  45. -- === 元信息查询 ===
  46. log.info("zbuff_core", "=== 元信息查询 ===")
  47. local len = buff:len()
  48. log.info("zbuff_core", "元信息", "总长度:", len)
  49. local used = buff:used()
  50. log.info("zbuff_core", "元信息", "已使用:", used)
  51. -- === 高效数据查询 ===
  52. log.info("zbuff_core", "=== 高效数据查询 ===")
  53. buff:clear()
  54. buff:seek(0)
  55. buff:write(0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC)
  56. local all_data = buff:query(0, 6)
  57. log.info("zbuff_core", "query查询", "全部数据:" ,all_data:toHex())
  58. -- 查询部分数据并转换格式,查询1,2,4,8字节的时候会自动根据后续参数进行转换(大端序、无符号)
  59. -- 参数:起始位置0,长度4,大端序,无符号,非浮点
  60. local part_data = buff:query(0, 4, true, false, false)
  61. log.info("zbuff_core", "query查询", "大端序格式:", part_data)
  62. log.info("zbuff_core", "核心功能演示完成")
  63. end
  64. sys.taskInit(zbuff_core_task_func)