Lua - 在 32 位 lua 编译器上处理 64 位数字
Lua - Handling 64 bits number on 32 bit lua compiler
目前我正在尝试解码数据(使用lua)。我的数据是 64 位十六进制(大端)。
该特定数字需要转换为小端。除此之外,其他的位运算稍后会根据内部逻辑应用。
现在,最初我认为事情会很简单,因为我可以使用 bitop 并简单地应用我想要的任何按位运算。
现在,不幸的是,我有(并且请注意我无法更改此),32 位 lua 编译器,因此,我不能简单地使用这些操作。
有2个问题想请教:
如果我有十六进制
800A000000000000
我如何使用 32 位运算(特别是在这种情况下,我上面共享的库中的 bit.bswap、bit.rshift、bit.lshift 等操作)
十六进制数?是否可以将这个数字分成两部分,
然后对它们中的每一个应用操作,然后合并它们
再度携手?如果是这样,怎么办?
- 你有什么好的参考资料(比如一本好书)我可以用来
熟悉算法以及我能做什么和我能做什么
当我们谈论按位运算时不能(特别是
使用多个小块表示大量数字)
在问这个问题之前,我找到并阅读了同一主题的其他参考资料,但它们都与特定案例更相关(除非您熟悉该主题,否则很难理解):
- lua 64-bit transitioning issue
- Lua是否利用
64 位整数?
- 判断Lua编译器是否运行32或
64 位
- 使用 32 位按位比较带符号的 64 位数字
Lua
中的操作
在对该主题进行更详细的调查、测试和与其他人交流后,将其意见与该主题相关,发布答案:
在这种特定情况下,您拥有 32 位还是 64 位编译器(或设备)并不重要。 The largest integer you are able to represent based on lua doc: 64-bit floats can only represent integers up to 53 bits of precision, 以及我用作例子比那个大。
这意味着任何类型的通用位运算都不适用于这些数字。
基本上,这个问题可以重构为:“如何在完整的 64 位上使用 lua 中的位运算?”。
唯一的解决办法是为此使用库或自己实现(将 64 位数字分成两个 32 位数字并自己实现位运算符)
目前我正在尝试解码数据(使用lua)。我的数据是 64 位十六进制(大端)。
该特定数字需要转换为小端。除此之外,其他的位运算稍后会根据内部逻辑应用。
现在,最初我认为事情会很简单,因为我可以使用 bitop 并简单地应用我想要的任何按位运算。
现在,不幸的是,我有(并且请注意我无法更改此),32 位 lua 编译器,因此,我不能简单地使用这些操作。
有2个问题想请教:
如果我有十六进制
800A000000000000
我如何使用 32 位运算(特别是在这种情况下,我上面共享的库中的 bit.bswap、bit.rshift、bit.lshift 等操作) 十六进制数?是否可以将这个数字分成两部分, 然后对它们中的每一个应用操作,然后合并它们 再度携手?如果是这样,怎么办?- 你有什么好的参考资料(比如一本好书)我可以用来 熟悉算法以及我能做什么和我能做什么 当我们谈论按位运算时不能(特别是 使用多个小块表示大量数字)
在问这个问题之前,我找到并阅读了同一主题的其他参考资料,但它们都与特定案例更相关(除非您熟悉该主题,否则很难理解):
- lua 64-bit transitioning issue
- Lua是否利用 64 位整数?
- 判断Lua编译器是否运行32或 64 位
- 使用 32 位按位比较带符号的 64 位数字 Lua 中的操作
在对该主题进行更详细的调查、测试和与其他人交流后,将其意见与该主题相关,发布答案:
在这种特定情况下,您拥有 32 位还是 64 位编译器(或设备)并不重要。 The largest integer you are able to represent based on lua doc: 64-bit floats can only represent integers up to 53 bits of precision, 以及我用作例子比那个大。
这意味着任何类型的通用位运算都不适用于这些数字。
基本上,这个问题可以重构为:“如何在完整的 64 位上使用 lua 中的位运算?”。
唯一的解决办法是为此使用库或自己实现(将 64 位数字分成两个 32 位数字并自己实现位运算符)