簡體   English   中英

Lua C API:處理大量

[英]Lua C api: handling large numbers

我在代碼中處理了皮秒(數字> 10 ^ 12)。
將數據傳遞給Lua的C代碼(atime和eventid均為size_t類型)

lua_getglobal ( luactx, "timer_callback" );
lua_pushunsigned ( luactx, atime );
lua_pushunsigned ( luactx, eventid );
lua_pcall ( luactx, 2, 0, 0 );

Lua功能

function timer_callback(time, eventid)  
  if eventid == TX_CLOCK then
  out_log(tostring(time)) --result is random garbage
  set_callback(time + 1000000000000, TX_CLOCK)
  return
  end  
end

我嘗試使用lua_pushnumber,但結果是lua我得到了負數。

從5.3開始,Lua支持lua_Integer ,默認情況下為64位。 參考手冊中

lua_Integer

typedef ... lua_Integer;

Lua中的整數類型。

默認情況下,此類型為long long(通常是64位的兩個補碼整數),但是可以將其更改為long或int,通常是32位的兩個補碼整數。 (請參見luaconf.h中的LUA_INT。)Lua還定義了常數LUA_MININTEGER和LUA_MAXINTEGER,並帶有適合該類型的最小值和最大值。

通過編輯luaconf.h可以很容易地將Lua 5.2 lua強制使用其他數字類型。 數字類型定義為LUA_NUMBER

對於lua 5.1,您可以安裝lnum補丁,它將更改整數類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM