下面的代码是将一个10进制的数转化为任意2-16进制的形式,能分析一下代码原理吗

public static long decimalToMRadix(long n, long m) { // 将 n 十进制转化成 m(2-16) 进制

  long mradix = 0, r = 0, t = 0;

  while(n != 0) {

   r = n % m;

   n /= m; // 改变 n 值

   mradix += (long) (r * Math.pow(10, t));

   t++;

  }

  return mradix;

 }

m分别代码2,8,16,n与m求余数反过来就是对应的2进制,8进制,16进制。

也就是说第一次求出来的是个位,然后是10位,百位,以此类推。