如何从字节中获取数字?

时间:2018-03-03 04:31:41

标签: lua bytecode

我目前正在尝试使用Lua 5.1字节码。我已经走得很远,并且了解了很多。但是,我对指令和数字的问题感到困惑。我知道指令和数字的大小是在标题中定位和定义的,但我不知道如何从4个字节中获取实际数字(或者在标题中指定的任何大小)。

我查看了ChunkSpy的输出,我真的不明白它是如何从这些字节转到数字的。我在源头看,但我不想复制它,我想了解它。如果有人能告诉我一点,或者甚至指出我正确的方向,我将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

第一个字节是3 = LUA_TNUMBER。

接下来的字节是数字,长度在标题中给出。解释基于标题中给出的长度,字节顺序和积分标记。

通常,8字节的非整数表示IEEE 754 64位双精度。

将字节反序列化为double需要提取尾数和指数的位,并将它们与算术运算相结合。也许您希望这是一个挑战,并从标准的描述开始:What Every Computer Scientist Should Know About Floating-Point Arithmetic,“格式和操作”部分。