2014-11-14 10 views
5

Mam funkcji lua, który konwertuje adresy IP do 32 bit intjak wyodrębnić 4 bajty int 32bit w 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 

chciałbym mieć funkcję odwrotną, tzn dostać 4 bajty z Int

Odpowiedz

5

Możesz użyć bibliotek bitowych lub bit32 (zawartych w Lua 5.2+ i LuaJIT i dostępnych jako moduły dla wersji 5.1). Można także skorzystać z odwrotne operacje, co już masz:

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

dokładnie to, czego potrzebowałem, dzięki! –

1

Zastosowanie string.unpack/paczka konwertować najbardziej prymitywnych typów lub z tablicy bajtów (ciąg w Lua).

Powiązane problemy