tcl:使用`format`操作大于0xFFFFFFFF的数字

时间:2013-09-16 21:31:06

标签: tcl

我需要对MAC地址进行一些操作,以48位编码,但format会截断结果:

format 0x%x 0x100000000 ;# --> 0x0

是否可以为此做一些事情,或者我是否必须调整我的代码以使用较小的数字?

1 个答案:

答案 0 :(得分:3)

在Tcl 8.4中,只需将大小修饰符l赋予format的字段指定符。这样,您告诉format将该值解释为(至少)64位数字(相同大小的wide(),这取决于机器):

format 0x%lx 0x100000000

(请注意,它是一个小写的 el 字母,而不是一个数字。)

在Tcl 8.5及更高版本中,整数数学以任意精度完成,ll大小修饰符告诉format不截断该值:

format 0x%llx 0x100000000

(同样,它们是两个小写 el 字母,而不是两个一个数字。)