最近在做新的專案,設計打檔案傳輸問題,lua和c++互動。踩了不少坑,也收穫很多。
1.lual_tointeger 和lua_tonumber
在把大檔案的大小傳給c++時,用
lua_tointeger取出,導致計算出錯。後來經過仔細看了lua api文件,才發現,這個介面轉出的結果是整形,長度明顯不夠。最終只能用lua_tonumber解決問題。
lua_tointeger
lua_integer lua_tointeger (lua_state *l, int idx);
把給定索引處的 lua 值轉換為 lua_integer
這樣乙個有符號整數型別。 這個 lua 值必須是乙個數字或是乙個可以轉換為數字的字串 否則,lua_tointeger
返回 0 。
如果數字不是乙個整數, 截斷小數部分的方式沒有被明確定義。
lua_tonumber
lua_number lua_tonumber (lua_state *l, int index);
把給定索引處的 lua 值轉換為
lua_number
這樣乙個 c 型別
lua_number
typedef double lua_number;
lua 中數字的型別。 確省是 double ,但是你可以在
luaconf.h
中修改它。
通過修改配置檔案你可以改變 lua 讓它操作其它數字型別
2.fseek和 _fseeki64
在上傳檔案時是分塊上傳,讀取檔案時就用到了fseek移動檔案指標的偏移,詭異的出錯了,每次讀取超過2g的檔案,fseek都失敗。long的最大值是2147483647
int fseek( file *stream, long offset, int origin );
int _fseeki64( file *stream, __int64 offset, int origin );
3.getfilesize 和getfilesizeex
第三個坑還是跟檔案大小有關,不熟悉win api,憑經驗,直接用了
getfilesize ,超過2g的檔案返回值又錯了。
typedef
union
_large_integer ;
struct
u; longlong quadpart;} large_integer, *plarge_integer;
bool winapi getfilesizeex( _in_ handle hfile, _out_ plarge_integer lpfilesize);
dword winapi getfilesize( _in_ handle hfile, _out_opt_ lpdword lpfilesizehigh);
各種api介面
實用號碼歸屬地查詢 ip 位址,手機號碼 預設格式 http api.liqwei.com location 使用來訪者的 ip 位址 指定手機號碼格式 北京的號碼 可選引數 js js 輸出 預設為 0,可選值 1,0 備註 utf 8 編碼支援的格式 其它引數不變 城市天氣情況查詢 指定手機號碼...
KVM的各種坑
1.編譯的坑 費了老大勁,找到這幫人的郵件往來,才知道這裡面有乙個命令寫錯來,一行一行的修改之後,才得以通過編譯 記錄如下 diff git a qemu options.hx b qemu options.hx index 4bc9c85.3af60bf 100644 a qemu options...
for in 的各種坑
for in方法用來遍歷陣列或者物件的顯性屬性,就是說我們自己定義的屬性都是可以遍歷的,而物件固有的屬性,比如object.prototype.tostring是遍歷不出來的。for in方法簡潔好用,但依舊有一些需要注意的地方 1.遍歷順序 var b for var key in b for v...