[英]LUA 5.4 - How to convert 64-bit numbers to hex
我想在 lua 中將大於 64 位的數字(包括最多 256 位的數字從十進制轉換為十六進制)。
例子:
num = 9223372036854775807
num = string.format("%x", num)
num = tostring(num)
print(num) -- output is 7fffffffffffffff
但如果我已經添加了一個數字,它會在下面的示例中返回錯誤:
num = 9223372036854775808
num = string.format("%x", num)
num = tostring(num)
print(num) -- error lua54 - bad argument #2 to 'format' (number has no integer representation)
有沒有人有任何想法?
我想在 lua 中將大於 64 位的數字(包括最多 256 位的數字從十進制轉換為十六進制)。
好吧,如果不涉及像這個這樣的大型 integer 庫,這是不可能的。 Lua 5.4 有兩種數字類型:64 位有符號整數和 64 位浮點數,它們都被限制為存儲任意 256 位整數。
您示例中的第一個 num 9223372036854775807
只是 int64 邊界的上限( -2^63
到2^63-1
,包括兩者)。 對此加1
會強制 Lua 將其轉換為 float64,它可以表示比精度大得多的數字。 然后你會留下一個不精確的浮點數,它沒有“整數表示”,因為 Lua 告訴你。
您可以自己輕松地重新實現%x
,但這無助於您擴展浮點數和整數的精度/大小。 您需要找到另一個數字表示,並使用它找到或寫入 go 的 bigint 庫。 選項是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.