TCL语言的进制转换

2,384 Views
『作者:RickyZhu 转载务必注明出处和作者』
Tag:

TCL语言的语法非常简单,只有一种数据类型,那就是String,因此没有数字的概念,所以数字的处理都需要借助一些方法进行。以前写过一个进制之间的相互转换的方法,是最基本的API,支持十进制到其他进制之间的转换。贴出来,供大家参考一下:
用法很简单,两个参数,第一个参数是十进制的值,第二个参数是进制,比如你要把100转成8进制,只要按照下面的方法调用即可:

dec2bin 100 8


proc dec2bin {dec change} {

set bin “”
set a 1
while {$a>0} {
set a [expr $dec/$change]
set b [expr $dec%$change]
set dec $a
set bin $b$bin
}
set len [string length $bin]
if {$len < 8 } {
for {set i 0} {$i<[expr 8-$len]} {incr i} {
set bin 0$bin
}
}
return $bin
}

另外,针对其他进制的转换,都可以利用TCL的方法format和scan进行。比如把一直16进制转成10进制就可以这么写:

set hex 0×3a
scan $hex %x decimal
puts $decimal
这样就把hex转成了十进制。其他类型的转换可以参考TCL的format方法帮助。


随机文章

4条留言

(Required)
(Required, not published)


Close
E-mail It