2017-04-04 1 views
-2

IPv6 주소를 숫자 표현으로 변환 할 수있는 함수를 만들어야했습니다.ColdFusion IPv6에서 128 비트 부호없는 정수

IPv4로 작업하는 것은 숫자 표현에 32 비트 부호없는 int를 사용하기 때문에 꽤 간단합니다. IPv6은 128 비트 부호없는 int로 표현됩니다. 이 숫자의 크기는 ColdFusion의 내장 비트 논리 함수가 사용하기에는 너무 큽니다.

이 함수는 기본 Java 시스템을 사용하여 변환해야합니다. ColdFusion 128-bit unsigned int to IPv6

+0

http://codereview.stackexchange.com/ maybe? – Henry

+0

@ScottJibben - 이유가 확실하지 않은 이유는 무엇입니까?하지만 어쩌면 위와 같은 단어를 바꿔 "질문"처럼 들릴지 모릅니다. 예 : 'X를 시도하고 코드 Y 코드를 시도했지만'{공백} 대신 결과 Z가 표시됩니다 '와 유사합니다. 그것은 아마 S.O. 형식과 더 잘 어울릴 것입니다. – Leigh

답변

0

이 내가 128 비트 부호없는 INT에 IPv6 주소를 변환하는 데 쓴 기능은 다음과 같습니다

이 역을 할 수있는 기능이 필요합니다.

<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

이것은 ''이어야합니다. –