Dynamics AX - NumberSeq::numInsertFormat解析

总的来说,这是一个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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值