LUA IPv6 转换为长整型

使用下面的模块,我可以将 IPv4 地址转换为长整型。那么我该如何将 IPv6 转换为长整型呢?

function ip2long(ip)
    local inp = ffi.new("struct in_addr[1]")
    if C.inet_aton(ip, inp) ~= 0 then
        return tonumber(C.ntohl(inp[0].s_addr))
    end
    return nil
end

function long2ip(long)
    if type(long) ~= "number" then
        return nil
    end
    local addr = ffi.new("struct in_addr")
    addr.s_addr = C.htonl(long)
    return ffi.string(C.inet_ntoa(addr))
end

https://github.com/agentzh/lua-php-utils/blob/master/php/utils.lua

点赞