【发布时间】:2012-02-01 17:06:00
【问题描述】:
Tcl expr 函数支持以十六进制表示法编写的参数:以0x 开头的操作数被视为以十六进制形式编写的整数。
但是expr 的返回值始终为十进制形式:expr 0xA + 0xA 返回20,而不是0x14。
有没有办法告诉expr 返回十六进制表示?
有没有将十进制表示转换为十六进制的 Tcl 函数?
【问题讨论】:
标签: hex expression tcl
Tcl expr 函数支持以十六进制表示法编写的参数:以0x 开头的操作数被视为以十六进制形式编写的整数。
但是expr 的返回值始终为十进制形式:expr 0xA + 0xA 返回20,而不是0x14。
有没有办法告诉expr 返回十六进制表示?
有没有将十进制表示转换为十六进制的 Tcl 函数?
【问题讨论】:
标签: hex expression tcl
我想详细说明 glenn 的帖子,以便让 Vahagn 更清楚地了解情况。
expr 不会以一种或另一种表示形式返回其结果,而是以某种合适的内部格式(整数、大整数、浮点值等)返回值。您在测试中看到的只是 Tcl 解释器将 expr 返回的内容转换为适当的文本形式,使用 default 转换为字符串,对于整数,自然使用以 10 为底的字符串。
在您的情况下发生这种转换仅仅是因为您想显示expr 返回的值,并且显示(任何)值自然倾向于将它们转换为字符串,如果它们被“打印”到终端,到tkcon 的窗口等
通过使用format,您可以强制执行您想要的任何字符串表示,而不是默认的。由于format 已在内部返回一个字符串值,因此在打印时不会进行任何转换。
【讨论】: