2014-11-14 44 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字符串)。

相关问题