coo*_*ool 5 64-bit lua hex bitwise-operators
目前我正在尝试解码数据(使用lua).我有的数据是64位十六进制(大端).
该特定数字需要转换为小端.除此之外,稍后将基于内部逻辑应用其他按位操作.
现在,最初我认为事情会很简单,记住我可以使用bitop并简单地应用我想要的任何按位操作.
现在,不幸的是,我(请注意我无法改变这一点),32位lua编译器,因此,我不能简单地使用这些操作.
我想问两个问题:
如果我有十六进制
800A000000000000如何在这个十六进制数字上使用32位按位操作(特别是在这种情况下,像上面共享的库中的bit.bswap,bit.rshift,bit.lshift这样的操作)?是否可以将此数字拆分为2个部分,然后对每个部分应用操作,然后再将它们合并在一起?如果是这样的话,怎么样?
在提出这个问题之前,我发现并阅读了同一主题的其他参考文献,但所有这些都与具体案例有关(除非您熟悉该主题,否则很难理解):
经过对该主题进行更详细的调查,测试并与其他人交流哪些意见与该主题相关,发布答案:
在这种特定情况下,您拥有 32 位还是 64 位编译器(或设备)实际上并不重要。根据lua doc,您能够表示的最大整数:64位浮点数只能表示精度高达53位的整数,而我用作示例的十六进制数比这个数字更大。
这意味着任何类型的通用按位运算都不适用于这些数字。
基本上,这个问题可以重构为:“如何在全 64 位上使用 lua 中的按位运算? ”。
唯一的解决方案是使用库或自己实现它(将 64 位数字分离为两个 32 位数字并自己实现按位运算符)
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |