我想将 3 位数字长的十六进制转换为 6 位数字。例如 12F 应为 00012F。我尝试了这段代码,但没有成功。
endadd = Format(endadd, "000000")
Run Code Online (Sandbox Code Playgroud)
正如斯科特·克兰纳(Scott Craner)指出的那样,简单的方法Right("000000" & endadd,6)可以很好地工作,但Right$("000000" & endadd,6)速度稍快一些。
此外,从性能角度来看,它实际上取决于endadd值的原始来源是字符串还是数字。
'CONCAT String Approach
'If the hex source is a string, then this is the most efficient approach
formattedHex = Right$("000000" & "12F", 2)
'CONCAT Numeric Approach
'But if the hex source is a numeric, then this hex conversion AND concatenation is required, but it is SLOW
formattedHex = Right$("000000" & Hex$(&H12F), 2)
'ADDITION/OR Numeric Approach
'When the hex source is numeric it is more efficient to use a bit trick to add AND convert
formattedHex = Right$(Hex$(&H1000000 + &H12F), 2)
formattedHex = Right$(Hex$(&H1000000 Or &H12F), 2)
Run Code Online (Sandbox Code Playgroud)
10m 操作循环的结果:
Approach | Using Right | Using Right$ |
==========================+=============================
CONCAT String Approach | 1.59s | 1.40s
CONCAT Numeric Approach | 2.63s | 2.33s
ADDITION Numeric Approach | 1.74s | 1.60s
======================================================
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6450 次 |
| 最近记录: |