How to extract 4 bytes of a 32-bit int in lua

I have a lua function that converts ip addresses to 32 bit int

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 

I would like to have an inverse function, i.e. get 4 bytes from int

+5
source share
2 answers

You can use the bit or bit32 libraries (included in Lua 5.2+ and LuaJIT and available as modules for 5.1). You can also use inverse operations for what you already have:

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

Use string.unpack / pack to convert most primitive types to or from an array of bytes (string in Lua).

+1
source

Source: https://habr.com/ru/post/1206924/


All Articles