lua 二进制和八进制字符串互转
来源:互联网 发布:快手作品制作软件 编辑:程序博客网 时间:2024/05/19 05:34
local h2b = { ["0"] = 0, ["1"] = 1, ["2"] = 2, ["3"] = 3, ["4"] = 4, ["5"] = 5, ["6"] = 6, ["7"] = 7, ["8"] = 8, ["9"] = 9, ["A"] = 10, ["B"] = 11, ["C"] = 12, ["D"] = 13, ["E"] = 14, ["F"] = 15}
local function hexstr2bin( hexstr ) local s = string.gsub(hexstr, "(.)(.)", function ( h, l ) return string.char(h2b[h]*16+h2b[l]) end) return sendlocal function bin2hexstr(s) s=string.gsub(s,"(.)",function (x) return string.format("%02X",string.byte(x)) end) return sendhexStr = "67879AAF65F3332A3B5E"print("hexStr:"..hexStr.."\n")local binVal = hexstr2bin(hexStr)print(binVal);print("hexStr:"..bin2hexstr(binVal))
上面所用的lua模元字符串含义可以对照下表
模式元字符 描述
. 所有字符
%a 字母
%c 控制字符
%d 数字
%l 小写字母
%p 标点符号
%s 空白字符
%u 大写字母
%w 字母和数字字符
%x 十六进制数字
%z 内部表示为0的字符
再结合一些例子比较好理解
1.这里括弧就是匹配到的数据需要返回的
pair = "name = Anna"
key,value = string.match(pair,"(%a+)%s*=%s*(%a+)")
print(key,value) --输出name anna
date = "Today is 2012-01-02"
y,m,d = string.match(date,"(%d+)\-(%d+)\-(%d+)")
print(y,m,d) --输出2012 01 02
2.还可以对模式本身使用捕获。即%1表示第一个捕获,以此类推,%0表示整个匹配,如:
print(string.gsub("hello Lua","(.)(.)","%2%1")) --将相邻的两个字符对调,输出为ehll ouLa
print(string.gsub("hello Lua!","%a","%0-%0")) --输出为h-he-el-ll-lo-o L-Lu-ua-a!
3.当然也可以是函数,就像最开始代码用到的
含义就是两个任意字母依次遍历,好像这个“.”匹配的时候可以是不可见字符,否则文章中的代码就有问题了
local function hexstr2bin( hexstr ) local s = string.gsub(hexstr, "(.)(.)", function ( h, l ) return string.char(h2b[h]*16+h2b[l]) end) return send
这个反正不同函数用的模式匹配规则都一样的,lua真的功能很强大
0 0
- lua 二进制和八进制字符串互转
- 二进制 八进制 和十六进制
- 二进制、八进制和十六进制
- 八进制和十六进制与二进制的转换及对应字符串
- 二进制转八进制,八进制转二进制
- 二进制、八进制、十六进制[转]
- 八进制转二进制
- 二进制转八进制
- 二进制转八进制
- 关于字符串转二进制、八进制、十进制、十六进制等的函数
- 在c++中int转十六进制八进制二进制字符串
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- 字符串转二进制和二进制转字符串:
- 十六进制转二进制转八进制
- 十进制转二进制 八进制 十六进制
- 二进制转八进制vb6程序
- 十进制转二进制,八进制,十六进制
- POJ 3693 Maximum repetition substring RMQ+后缀数组
- STM32Cube 简单实验的翻译
- 每天一个linux命令:grep 命令
- iOS实现倒计时显示 时 分 秒
- css1.15
- lua 二进制和八进制字符串互转
- 每天一个linux命令:wc命令
- Zigbee+SIM900A 通过http协议实现上传数据到云服务器
- css1.16
- Error:(54, 84) 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
- Spring 自定义属性编辑(CustomEditorConfigurer)和类型转换器(ConversionServiceFactoryBean)一起配置问题
- learnR_function_1
- html5学习笔记(三)
- 源码分析Android bindService与startService区别