ColdFusion IPv6到128位unsigned int

时间:2017-04-04 09:32:43

标签: coldfusion coldfusion-11

我需要创建一个可以将IPv6地址转换为数字表示的函数。

使用IPv4非常简单,因为它使用32位无符号int作为其数字表示。 IPv6由128位无符号int表示。对于内置的ColdFusion位逻辑函数来说,这个数字的大小太大了。

此函数必须使用底层Java系统进行转换。

需要一个功能来反向:ColdFusion 128-bit unsigned int to IPv6

1 个答案:

答案 0 :(得分:0)

这是我写的用于将IPv6地址转换为128位无符号整数的函数。

<cffunction name="IPv6ToUInt128" returntype="numeric" output="no" access="public" hint="returns uint128 number for IPv6 address">
    <cfargument name="vcIPv6" type="string" required="yes" hint="IPv6 address">

    <cfif arguments.vcIPv6 EQ "">
        <cfreturn 0>
    </cfif>

    <cfset local['javaMathBigInteger'] = CreateObject("java", "java.math.BigInteger")>
    <cfset local['javaNetInetAddress'] = CreateObject("java", "java.net.InetAddress")>
    <cftry>
        <cfset local['uint128'] = local.javaMathBigInteger.init(1, local.javaNetInetAddress.getByName(arguments.vcIPv6).getAddress()).toString()>
        <cfreturn local.uint128>
        <cfcatch type="any">
            <cfreturn 0>
        </cfcatch>
    </cftry>
</cffunction>

如果您有任何改进此代码的建议,请发表评论。