zbuff_advanced.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. --[[
  2. @module zbuff_advanced
  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. 本文件没有对外接口,直接在main.lua中require "zbuff_advanced"就可以加载运行
  13. ]]
  14. local function zbuff_advanced_task_func()
  15. log.info("zbuff_advanced", "启动高级功能演示")
  16. -- 创建1024字节的缓冲区
  17. local buff = zbuff.create(1024)
  18. -- === 数据打包与解包演示 ===
  19. log.info("zbuff_advanced", "=== 数据打包与解包演示 ===")
  20. -- 清空缓冲区
  21. buff:clear()
  22. -- 重置指针到开头
  23. buff:seek(0)
  24. -- 打包数据:大端序,2个32位整数,1个16位整数,1个字符串
  25. buff:pack(">IIHA", 0x1234, 0x4567, 0x12, "abcdefg")
  26. log.info("zbuff_advanced", "数据打包", "格式: >IIHA", "值: 0x1234, 0x4567, 0x12, 'abcdefg'")
  27. -- 显示打包后的二进制内容
  28. local packed = buff:toStr(0, buff:used())--按照起始位置和长度,取出数据,并转换为字符串
  29. log.info("zbuff_advanced", "打包后数据", packed:toHex())
  30. -- 重置指针到开头
  31. buff:seek(0)
  32. -- 解包数据:大端序,2个32位整数,1个16位整数,1个10字节字符串
  33. local cnt, a, b, c, s = buff:unpack(">IIHA10")
  34. log.info("zbuff_advanced", "数据解包", "数量:", cnt, "值:", a, b, c, s)
  35. -- 显示解包后的输出内容
  36. -- string.forma是Lua的格式化字符串函数,按照格式化参数formatstring,返回后面...内容的格式化版本。string.format("0x%X", a)表示将整数a转换为十六进制字符串。
  37. log.info("zbuff_advanced", "解包输出内容",
  38. "cnt:", cnt,
  39. "a(32位):", string.format("0x%X", a),
  40. "b(32位):", string.format("0x%X", b),
  41. "c(16位):", string.format("0x%X", c),
  42. "s(字符串):", s)
  43. -- === 类型化读写演示 ===
  44. --[[
  45. 类型化读写演示
  46. 展示I8和U32两种类型操作
  47. @param buff zbuff对象
  48. --]]
  49. log.info("zbuff_advanced", "=== 类型化读写演示 ===")
  50. -- 重置指针到开头
  51. buff:seek(0)
  52. -- 写入8位有符号整数
  53. buff:writeI8(10)
  54. log.info("zbuff_advanced", "类型化写入", "I8:", 10)
  55. -- 写入32位无符号整数
  56. buff:writeU32(1024)
  57. log.info("zbuff_advanced", "类型化写入", "U32:", 1024)
  58. -- 重置指针到开头
  59. buff:seek(0)
  60. -- 读取8位有符号整数
  61. local i8data = buff:readI8()
  62. log.info("zbuff_advanced", "类型化读取", "I8:", i8data)
  63. -- 读取32位无符号整数
  64. local u32data = buff:readU32()
  65. log.info("zbuff_advanced", "类型化读取", "U32:", u32data)
  66. --[[
  67. 浮点数操作演示
  68. @param buff zbuff对象
  69. --]]
  70. log.info("zbuff_advanced", "=== 浮点数操作演示 ===")
  71. -- 重置指针到开头
  72. buff:seek(0)
  73. -- 写入32位浮点数
  74. buff:writeF32(1.2)
  75. log.info("zbuff_advanced", "浮点数操作", "写入F32:", 1.2)
  76. -- 重置指针到开头
  77. buff:seek(0)
  78. -- 读取32位浮点数
  79. local f32data = buff:readF32()
  80. log.info("zbuff_advanced", "浮点数操作", "读取F32:", f32data)
  81. -- 清空缓冲区
  82. buff:clear()
  83. -- 重置指针到开头
  84. buff:seek(0)
  85. log.info("zbuff_advanced", "高级功能演示完成")
  86. end
  87. sys.taskInit(zbuff_advanced_task_func)