通过toHex()、fromHex()和find()方法在lua中的数据处理

文章目录

一、toHex()方法

  • 作用:将二进制数据或字符串转换为十六进制表示形式。

  • 用法:常用于需要将数据表示为十六进制字符串的场景,例如打印数据、存储或传输。

local s = "861714051310641"
local test= string.toHex(s)
print(test)
-- 383631373134303531333130363431

二、fromHex()方法

  • 作用:将十六进制字符串转换回原始的二进制数据或字符串。

  • 用法:常用于需要从十六进制字符串恢复原始数据的场景,例如解码传输的数据。

local s = "383631373134303531333130363431"
local x = string.fromHex(s)
print(x)
-- 861714051310641

 三、find()方法

  • 作用:方法用于在字符串中查找指定的子串或模式,并返回子串或模式在字符串中的起始位置和结束位置。
  • 用法:处理字符串查找
start_pos, end_pos = string.find(haystack, needle [, init [, plain]])
  • haystack: 要搜索的目标字符串。
  • needle: 要查找的子串或 Lua 模式。
  • init: (可选)指定从目标字符串的哪个位置开始查找,默认为 1
  • plain: (可选)布尔值,如果为 true,则 needle 被视为普通字符串而不是模式匹配。默认为 false

返回值

  • start_pos: 子串或模式在目标字符串中的起始位置。
  • end_pos: 子串或模式在目标字符串中的结束位置。
  • 如果未找到子串或模式,则返回 nil

查找子串的位置

local s = "861714051310641"
local start_pos, end_pos = string.find(s, "0513")

print(start_pos, end_pos)  -- 输出: 7 10

 查找不存在的子串

local s = "861714051310641"
local start_pos, end_pos = string.find(s, "9999")

print(start_pos, end_pos)  -- 输出: nil nil

 使用 init 参数指定查找起始位置

local s = "861714051310641"
local start_pos, end_pos = string.find(s, "310", 8)

print(start_pos, end_pos)  -- 输出: 10 12

 使用模式匹配

local s = "861714051310641"
local start_pos, end_pos = string.find(s, "%d+")

print(start_pos, end_pos)  -- 输出: 1 15

使用 plain 参数进行精确查找

local s = "861714051310641"
local start_pos, end_pos = string.find(s, "0513", 1, true)

print(start_pos, end_pos)  -- 输出: 7 10

总结

例如:本文仅仅简单介绍了数据转换的使用,还有其他更多的方法处理数据需要实际使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值