簡體   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