什么是 Lua 数字类型长度(以字节为单位)?

Vya*_*lav 3 lua

以字节为单位的数字格式长度是多少?这是一种“多类型”数据格式。是 4 个字节吗?8 字节?多少?我怎样才能以编程方式获得它?长度是否取决于操作系统/处理器类型?

这里https://www.lua.org/pil/2.3.html文档说这是一个双精度类型。也就是说,它有 64 位。我对吗?

cat*_*ell 5

就像@Roddy 说的,整数类型有点复杂。此外,这取决于你的 Lua 是如何编译的。

基本上,在 Lua 5.3 中,有两种类型,整数类型lua_Integer和数字类型lua_Number。您可以通过解析块头从 Lua 中以编程方式获取它们的长度:

local chunk = string.dump(function() end)
print("lua_Integer", chunk:byte(16))
print("lua_Number", chunk:byte(17))
Run Code Online (Sandbox Code Playgroud)

通常,两个长度都是 8 个字节。然而,在某些嵌入式平台上,您可以找到 Luas,其中 lua_Number 类型是浮点数(4 个字节)、32 位整数甚至更奇怪的东西。

  • 请注意,这仅适用于 PUC-rio lua。它在例如 luajit 中不起作用 (2认同)