2017-04-04 94 views
-2

我需要创建一个函数,可以将IPv6地址转换为其数字表示。ColdFusion IPv6到128位无符号int

使用IPv4非常简单,因为它使用32位无符号整数来表示数字。 IPv6由128位无符号整数表示。内置的ColdFusion位逻辑函数使用的数量太大。

该函数必须利用底层Java系统进行转换。

需要一个函数来执行相反:ColdFusion 128-bit unsigned int to IPv6

+0

http://codereview.stackexchange.com/也许? – Henry

+0

@ScottJibben - 不知道为什么所有的反对票,但是......可能会重复上述所以听起来更像是“问题”?即“我试图做X并尝试代码Y代码,但得到的结果是Z而不是{空白}”。这可能会更适合S.O.的格式。 – Leigh

回答

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> 

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

+0

这应该是'' –