i'm not sure of the practicality of dealing with such large numbers in mIRC, but i went ahead and made a snippet that attempts to re-create $longip() for ipv6 addresses:

Code:
alias longipv6 {
  if ($1-. isnum) {
    if ($1 >= 0) {
      var %num = $1, %i = 8, %out = :
      while (%i) {
        bunset &quot
        bset &quot 50 0
        while ($left(%num, 15) > 65535) {
          var %div = $int($calc($v1 / 65536)), %rem = $v1 % 65536
          bset -t &quot $calc(51 - $mid(%num, 16, 0) - $len(%div)) %div
          %num = %rem $+ $mid(%num, 16)
        }
        %out = $+(:, $base(0 $+ $v1, 10, 16), %out)
        !breplace &quot 0 48
        %num = $regsubex($bvar(&quot, 1-).text, /^0*/, )
        dec %i
      }
      return $lower($regsubex(%out, /.$|((?:(:)0)++)(:$|(?(?!\1).)+(?=.$))|(((^)))./g, \2\3))
    }
  }
  elseif ($regex($1-, /^(?(?=.*::)(?!(?>.*?:(?=:)){2})(::|(?>(?<=^|::)|:)[a-f\d]{1,4}+){1,8}+|(?1){8})$/)) {
    var %n = $replace($1, ::, $str(:0:, $calc(8 - $numtok($1, 58)))), %i = 8, %out, $&
      %3 = 281474976710656, $&
      %4 = 18446744073709551616, $&
      %5 = 1208925819614629174706176, $&
      %6 = 79228162514264337593543950336, $&
      %7 = 5192296858534827628530496329220096
    while (%i) {
      var %num = $base($gettok(%n, %i, 58), 16, 10), %pow = 8 - %i
      if (%pow < 3) {
        inc %out $calc(%num * 65536 ^ %pow)
      }
      elseif (%num) {
        var %pow = $eval(% $+ %pow, 2), %carry, %result
        while ($right(%pow, 10)) {
          var %mul = $v1 * %num, %result = $base($calc($right(%mul, 10) + %carry), 10, 10, 10) $&
            $+ %result, %carry = $left(%mul, -10), %pow = $left(%pow, -10)
        }
        var %result = %carry $+ %result, %carry, %num
        while (%out $+ %result) {
          var %add = $calc($right(%result, 15) + $right(%out, 15)), $&
            %num = $base($calc($right(%add, 15) + %carry), 10, 10, 15) $+ %num, $&
            %carry = $left(%add, -15), %out = $left(%out, -15), %result = $left(%result, -15)
        }
        %out = %carry $+ %num
      }
      dec %i
    }
    return $regsubex(%out, /^0*+\B/, )
  }
}


i tried to make it quick as opposed to short :P you can also use this to validate ipv6 addresses, it supports compressed address and will even output in that format whenever possible. you can even use it to convert from base 10 to hex and back for ridiculously large integers!



"The only excuse for making a useless script is that one admires it intensely" - Oscar Wilde