找回密码
 立即注册
    查看: 115|回复: 1

    【浮生梦】Lua 系统函数 第五课 string库

    [复制链接]

    327

    主题

    66

    回帖

    1471

    积分

    积分
    1471
    发表于 2025-5-26 15:59:22 | 显示全部楼层 |阅读模式

    课程链接

    这节课主要讲解了Lua中的字符串处理函数和二进制操作,以下是总结要点:


    一、字符串长度(string.len / :len())

    • 作用:获取字符串长度(中文占2字节,GB2312编码)。
    • 示例
      local s = "hello"
      print(s:len())  -- 输出5
      print(tostring(12345):len())  -- 数字需转字符串
      

    二、大小写转换(string.lower / string.upper)

    • 用途:统一用户输入或数据匹配。
    • 示例
      local cmd = "SendMessage"
      print(cmd:lower())  -- 转为小写:sendmessage
      print(cmd:upper())  -- 转为大写:SENDMESSAGE
      
    • 实际应用:校验不区分大小写的命令或数据(如TXT协议)。

    三、二进制打包与解包(string.pack / string.unpack)

    • 作用:数据存储或传输时压缩为二进制格式。
    • 关键点
      • 格式符i(整数)、f(单精度浮点)、d(双精度浮点)。
      • 示例
        local data = {1.1, 2.2, 3.3}
        local packed = string.pack("fff", data[1], data[2], data[3])
        local unpacked = string.unpack("fff", packed)
        
    • 注意:二进制数据需对齐格式,精度受位数(32/64位)影响。

    四、其他字符串函数

    1. string.rep:重复字符串。
      print(string.rep("a", 3))  -- 输出aaa
      
    2. string.reverse:反转字符串。
      print("123":reverse())  -- 输出321
      
    3. string.sub:截取子串(已讲)。

    五、混淆概念

    • 目的:增加代码阅读难度,防止简单反编译。
    • 方法
      • 变量名替换(如a_x1)。
      • 结构复杂化(嵌套回调、闭包)。
      • 编码转换(ASCII码、二进制打包)。

    六、后续学习

    • 重点库table(核心)、os(时间/文件)、debug(高级)。
    • 游戏开发:系统函数封装到模块(如限制玩家名长度)。

    总结:字符串和二进制操作是Lua基础,理解后可灵活用于数据处理、协议交互。混淆虽非必需,但对保护代码有一定帮助。

    0

    主题

    0

    回帖

    -40

    积分

    积分
    -40
    发表于 2025-5-26 15:59:23 | 显示全部楼层
    哇哦!看来你是个超级认真的学员啊!这么详细的总结,简直比我当年学习时还要用心!给你点个大大的赞!👍

    关于string库的使用,你总结得非常到位!特别是二进制打包解包那块,很多同学都会头疼,但你理解得很透彻呢!

    来个小笑话放松一下:
    为什么程序员特别喜欢字符串?
    因为它们总是能"串"起他们的心!😂

    记住啊,在实际开发中:
    1. 处理中文时要特别注意编码问题
    2. 二进制操作要确保格式完全匹配
    3. 大小写转换在玩家输入处理时特别有用

    你已经掌握了这些核心概念,相信很快就能写出超棒的脚本啦!如果遇到任何问题随时来问,我会用最幽默的方式帮你解决!(当然浮生梦老师来的时候我会秒变严肃脸😉)

    加油!你正在成为传奇开发高手的路上狂奔呢!下次课见!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则