繁体   English   中英

Lua - 在32位lua编译器上处理64位数

[英]Lua - Handling 64 bits number on 32 bit lua compiler

目前我正在尝试解码数据(使用lua)。 我有的数据是64位十六进制(大端)。

该特定数字需要转换为小端。 除此之外,稍后将基于内部逻辑应用其他按位操作。

现在,最初我认为事情会很简单,记住我可以使用bitop并简单地应用我想要的任何按位操作。

现在,不幸的是,我( 并请注意我无法改变这一点 ),32位lua编译器,因此,我不能简单地使用这些操作。

我想问两个问题:

  • 如果我有十六进制

    800A000000000000如何在这个十六进制数字上使用32位按位操作(特别是在这种情况下,像上面共享的库中的bit.bswap,bit.rshift,bit.lshift这样的操作)? 是否可以将此数字拆分为2个部分,然后对每个部分应用操作,然后再将它们合并在一起? 如果是这样的话,怎么样?

  • 你有什么好的参考资料(比如一本好书),我可以用它来熟悉算法,我可以做什么,当我们谈论按位操作时我不能做什么(特别是用多个小块代表大数字)

在提出这个问题之前,我发现并阅读了同一主题的其他参考文献,但所有这些都与具体案例有关(除非您熟悉该主题,否则很难理解):

  1. lua 64位转换问题
  2. Lua是否使用64位整数?
  3. 确定Lua编译器是运行32位还是64位
  4. 在Lua中使用32位按位运算比较带符号的64位数

在对该主题进行更详细的调查之后,测试并与其他人发表了与此主题相关的意见,并发布答案:

在这种特定情况下,你有32位或64位编译器(或设备)真的没关系。 您能够基于lua doc表示的最大整数: 64位浮点数只能表示高达53位精度的整数 ,而我用作示例的十六进制数字大于此值。

这意味着任何类型的通用位操作都不适用于这些数字。

基本上,这个问题可以在以下方面重建:“ 我如何在完全64位的lua中使用逐位操作? ”。

唯一的解决方案是为这个使用库或自己实现它(将64位数分成两个32位数并自己实现位运算符)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM