Lua 中的数字类型长度是多少字节?
数字格式的长度是多少字节? 这是一种“多类型”数据格式。它是 4 字节?8 字节?多少?如何通过编程获取它?长度是否取决于操作系统/处理器类型?
这里https://www.lua.org/pil/2.3.html的文档中说这是双精度类型。也就是说,它有 64 位。我的理解是对的吗?
这取决于 Lua 的版本,当然也取决于它的编译方式。
5.3 版本提供了真正的整数,通常为 64 位。https://www.lua.org/manual/5.3/manual.html
类型 number 使用两种内部表示或两种子类型,一种称为整数,另一种称为浮点数。
...
标准 Lua 使用 64 位整数和双精度(64 位)浮点数,但您也可以编译 Lua,使其使用 32 位整数和/或单精度(32 位)浮点数。
早期的版本始终使用 64 位双精度浮点数,可以有效地准确表示高达 52 位的整数。你的链接... https://www.lua.org/pil/2.3.html
像 @Roddy 所说的那样,整数类型有点复杂。此外,它取决于你的 Lua 编译方式。
基本上,在 Lua 5.3 中,有两种类型,整数类型 lua_Integer 和数字类型 lua_Number。你可以通过 解析块头 在程序中获取它们的长度:
local chunk = string.dump(function() end)
print("lua_Integer", chunk:byte(16))
print("lua_Number", chunk:byte(17))
通常,这两个长度都是 8 个字节。然而,在某些嵌入式平台上,你可能会找到 lua_Number 类型为浮点数(4 字节)、32 位整数甚至更奇怪的东西的 Luas。
Lua 作为一门语言并没有定义你所要求的内容。表示数字的数据类型可能会因版本而异(请注意,“Lua 程序设计(第一版)”在线版的链接是关于 Lua 5.0 的),但这主要是由 Lua 的编译方式定义的,正如其他人已经说过的那样。
请查看 luaconf.h 以获取所有细节。
关于你实际的问题(将十六进制字符串转换为数字),你可以查看 tonumber() 在各种输入字符串上的结果,与已知结果进行比较:
function hexConvertibeBytes()
local i, s = 0, ''
repeat
i, s = i + 1, s .. 'FF'
local n = tonumber( s, 16 )
until n ~= 256^i - 1
return i - 1
end
我们可以使用 string.pack 如下:
s = string.pack("J",0)
number_of_bytes = #s
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
根据 Lua 参考手册(针对整数)
而对于浮点数