This post is meant to offer a solution to the problem mentioned here

As mIRC does not support 64 bits numbers, it's possible to do math on string.

Code
alias base2 {
  var %a 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ, %i -1, %t 0, %r 
  while ($mid($1,%i,1) >= 0) var %v $v1,%pos $pos(%a,%v) - 1,%pow $pow_($2,$calc((%i + 1) * -1)),%m $multiply_(%pow,%pos),%t $add_(%t,%m),%i %i - 1
  if ($3 == 10) return %t
  while %t >= 1 {
    %i = $mod_(%t,$3) + 1
    %r = $mid(%a,%i,1) $+ %r 
    %t = $divide_(%t,$3)
  }
  return %r
}

alias divide_ {
  var %res, %idx 1, %temp = $mid($1,1,1)
  while (%temp < $2) {
    inc %idx
    %temp = $calc(%temp * 10 + $mid($1,%idx,1));
  }
  while ($mid($1,%idx,1) != $null) {
    %res = %res $+ $int($calc(%temp / $2))
    inc %idx
    %temp = $calc((%temp % $2) * 10 + $mid($1,%idx,1))
  }
  if ($len(%res) == 0) return 0
  return %res
}

alias pow_ {
  if ($2 == 0) return 1
  var %temp $1,%n $2 - 1,%r $1
  while (%n) {
    %r = $multiply_(%r,%temp)
    dec %n
  }
  return %r
}

alias add_ {
  if ($len($2) > $len($1)) tokenize 32 $2 $1
  set -l %result
  set -l %carryover
  set -l %temp
  while ($right($1,15) isnum) {
    %temp = $base($calc($v1 + $right($2,15) + %carryover),10,10,$len($v1))
    %carryover = $mid(%temp,1-,-15)
    %result = $right(%temp,15) $+ %result
    tokenize 32 $mid($1,1-,-15) $mid($2,1-,-15)
  }
  return %result
}

alias mod_ {
  var %res 0,%a 1
  while ($mid($1,%a,1) != $null) {
    %res = $calc(%res * 10 + $v1) % $2
    inc %a
  }
  return %res
}

alias multiply_ {
  if ($len($2) > $len($1)) tokenize 32 $2 $1
  set -l %temp
  set -l %result
  set -l %multiplicand $1
  set -l %multiplier
  set -l %remaining
  set -l %interval
  set -l %padding
  set -l %carryover
  tokenize 1 $2
  while ($1 isnum) {
    %multiplier = $right($1,7)
    %remaining = $mid($1,1-,-7)
    %carryover = 0
    if (%multiplier > 0) {
      tokenize 1 %multiplicand
      while ($right($1,7) isnum) {
        %temp = $base($calc($v1 * %multiplier + %carryover),10,10,$len($v1))
        %carryover = $mid(%temp,1-,-7)
        %interval = $right(%temp,7) $+ %interval
        tokenize 1 $mid($1,1-,-7)
      }
      if (%carryover) %interval = %carryover $+ %interval
      %result = $add_(%result,%interval $+ %padding)
    }
    %padding = %padding $+ $str(0,$len(%multiplier))
    tokenize 1 %remaining
  }
  return %result
}
Credit to Dazuz for the two aliases $add_ and $multiply_, which can add and multiply two integers together, these integers can be of any length.
original $base2 alias by visionz
I created $mod_ $pow_ and $divide_, but these do not work with both integer being of any length, only the first integer can be of any length, which is enough for the purpose of $base.


#mircscripting @ irc.swiftirc.net == the best mIRC help channel