ColdFusion IPv6 в 128-битное целое число без знака

Мне нужно было создать функцию, которая могла бы преобразовывать адрес IPv6 в его числовое представление.

Работать с IPv4 довольно просто, так как он использует 32-битное целое число без знака для своего числового представления. IPv6 представлен 128-битным целым числом без знака. Этот размер числа слишком велик для использования встроенными логическими функциями битовой логики ColdFusion.

Эта функция должна использовать базовую систему Java для выполнения преобразования.

Нужна функция для обратного: ColdFusion 128-битное целое без знака в IPv6


person Scott Jibben    schedule 04.04.2017    source источник
comment
codereview.stackexchange.com может быть?   -  person Henry    schedule 04.04.2017
comment
@ScottJibben - Не уверен, почему все проголосовали против, но ... может быть, перефразировать вышеизложенное, чтобы это звучало больше как вопрос? т. е. как будто я пытаюсь сделать X и пробовал код Y, но получаю результат Z вместо {blank}. Это, вероятно, лучше подходит для формата S.O.   -  person Leigh    schedule 05.04.2017


Ответы (1)


Это функция, которую я написал для преобразования 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>

Если у вас есть предложения по улучшению этого кода, оставляйте комментарии.

person Scott Jibben    schedule 04.04.2017
comment
Это должно быть <cfscript> - person James A Mohler; 05.04.2017