2014-11-14 354 views
5

我有一個IP地址轉換爲32位的int一個Lua函數如何提取4個字節的32位整型在Lua

local str = "127.0.0.1" 
local o1,o2,o3,o4 = str:match("(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)") 
local num = 2^24*o1 + 2^16*o2 + 2^8*o3 + o4 

我想有反函數,即獲得由4個字節int

回答

5

您可以使用bit或bit32庫(包含在Lua 5.2+和LuaJIT中,並可作爲5.1的模塊使用)。您也可以使用反向操作,你已經擁有:

print(math.floor(num/2^24), math.floor((num % 2^24)/2^16), 
    math.floor((num % 2^16)/2^8), num % 2^8) 
+0

正是我所需要的,謝謝! – 2014-11-14 23:50:57

1

使用string.unpack /包,以最原始的類型轉換或字節數組(在Lua字符串)。

相關問題