总的来说,这是一个num2Str(...)的扩展。
方便理解,比如num2Str(30...)中,以10进制进行数值到字符串转换的,但是在NumberSeq::numInsertFormat(...)中每一位的进制可以随第二个参数(Format)的设置而不同,如果Format中对应的位是'&',则以字母(26)进制转换,如果对应的位是'#',则以10进制进行转换,如果转换后的字符串长度不够,那么在左边以"该位相应进制的0"来补齐(对于10进制就是字符'0',而对于26进制在该字符是'A').
比如: NumberSeq::numInsertFormat(29,"&&&"):
[注:在进行转换之前,程序判断如果在Format参数中不包括'#'字符,会将要转换的数值减1,在该例子中会使用28进行转换]
转换过程:
首先判断格式字符是否有'#',没有则: 29 - 1
然后从右到左:
第一位格式字符是"&",则以26进制对28进行转换,28 Mod 26 得到余数2(remainder = 2),
那么该位置的字符是 num2char(remainder + char2num(#FirstLetter, 1)),其中#FirstLetter为宏定义,值为'A',计算得出该位置的字符为'C'。
第二位格式字符是"&",同样使用26进制对1(28/26的商)进行转换,1 Mode 26得到余数1(remainder = 1),
那么该位置的字符是'B'.
对于第三位已经没有要进行转换的数并且格式字符是"&“,所以使用'A'(该位相应进制的0)进行填充,该位为'A'.
所以输出为ABC.