lua语言 如何将字符串整体转换为一个十进制数据 而不按照每个字符转为若干个十进制数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua语言 如何将字符串整体转换为一个十进制数据 而不按照每个字符转为若干个十进制数相关的知识,希望对你有一定的参考价值。

例如“ab“是转换为”ab“所代表的十六进制数0x6162所代表的十进制数24930 而不是转换为97和98这两个十进制数

参考技术A function HexDumpString(str,spacer)
return (
string.gsub(str,"(.)",
function (c)
return string.format("%02X%s",string.byte(c), spacer or "")
end)
)
end本回答被提问者采纳
参考技术B function getNum(v)
return tonumber("0x" .. v)
end
print(getNum("a"))
需要注意的
ab 不是6162 而是 十进制的 10*16+11 即171

lua能够用来写二进制数据吗?

如题,似乎io.write只能用来写字符串和数字,那么如何写入二进制数据呢?
比如我要将00到FF,256个字节写入一个文件.

参考技术A 1、假设有一个很多行文本的文件,想从中读取一行,并打印到屏幕上。可以使用 io.open() 命令打开文件并读取。
命令的语法是 io.open(filename, mode)。此处将使用 r 作为 mode 的值,意指读取(read)模式。作为参考,下面是所有可用模式的列表:
引用:
r - 读取模式w - 写入模式(覆盖现有内容)
a - 附加模式(附加在现有内容之后)
b - 二进制模式
r+ - 读取更新模式(现有数据保留)
w+ - 写入更新模式(现有数据擦除)
a+ - 附加更新模式(现有数据保留,只在文件末尾附加)
第一件要做的事情就是打开文件并存为一个变量。看下面。
代码:
file = io.open("testRead.txt", "r")
*n - 读取一个数字并返回它。例:file.read("*n")
*a - 从当前位置读取整个文件。例:file.read("*a")
*l - (默认) - 读取下一行,在文件尾 (EOF) 处返回 nil。例:file.read("*l")
number - 返回一个指定字符个数的字符串,或在 EOF 时返回 nil。
2、例程:
out=io.open("text.dat","wb")
for i=0,255 do
local x=string.char(i)
out:write(x)
end
out:close()
参考技术B 给你一个例子:
out=io.open("text.dat","wb")
for i=0,255 do
local x=string.char(i)
out:write(x)
end
out:close()

你可以查找lua的手册

参考资料:http://book.luaer.cn/_121.htm

本回答被提问者采纳

以上是关于lua语言 如何将字符串整体转换为一个十进制数据 而不按照每个字符转为若干个十进制数的主要内容,如果未能解决你的问题,请参考以下文章

高手请进!如何把整形数据转换为字符串(C语言)?

lua可以对单个字符和数字之间进行转换吗

求c语言将十进制数转换为16进制的函数

lua 转换16进制字符串为10进制数值

lua语言的字符串替换函数的使用方法问题。

使用FFI将二进制数据读取为Lua号