如何从字节中获取数字?

How do I get a number from bytes?

我目前正在尝试使用 Lua 5.1 字节码。我已经走了很远,也明白了很多。但是,我对说明和数字有疑问。我知道指令的大小和数字位于 header 中并在其中定义,但我不确定如何从 4 个字节(或 header 中指定的任何大小)中获取实际数字).

我看过 ChunkSpy 的输出,但我不太明白它是如何从这些字节变成数字的。我会查看源代码,但我不想只是复制它,我想了解它。如果有人能告诉我一些相关信息,甚至为我指出正确的方向,我将不胜感激。

谢谢!

A No-Frills Introduction to Lua 5.1 VM Instructions开始,数字存储在常量池中。

第一个字节是3=LUA_TNUMBER.

接下来的字节是数字,长度在header中给定。解释基于 header.

中给出的长度、字节顺序和整数标志

通常,non-integral 8 个字节表示 IEEE 754 64 位双精度。

将字节反序列化为双精度涉及提取尾数和指数的位,并将它们与算术运算相结合。也许您希望将其作为挑战并从标准的描述开始:What Every Computer Scientist Should Know About Floating-Point Arithmetic、"Formats and Operations" 部分。