TCL语言笔记:TCL练习二

一、练习

1.二进制转十进制

proc b2d {b} {
    set sum 0;set len [string length $b]
    for {set i 0} {$i<$len} {incr i} {
        incr sum [expr int([string index $b $i]*pow(2,$len-$i-1))]
    }
    return $sum
}

2.十进制转二进制

proc d2b {d} {
    set b ""
    while {$d!=0} {
        set b "[expr $d%2]$b"
        set d [expr $d/2]
    }
    return $b
}

3.根据长度转换成子网掩码

proc len2mask {len} {
    set mask ""
    for {set i 0} {$i<4} {incr i} {
        if {$len>=8} {
            lappend mask [b2d [formatb 8 8]]
            incr len -8
        } else {
            lappend mask [b2d [formatb $len 8]]
            set len 0
        }
    }
    return [join $mask .]
}

4.根据子网掩码转换成长度

proc mask2len {mask} {
    set msks [split $mask .]
    set len 0
    for {set i 0} {$i<4} {incr i} {
        set m [lindex $msks $i]
        set str [d2b $m]
        incr len [string length [string trim $str 0]]
    }
    return $len
}

 

转载于:https://www.cnblogs.com/huguodong/p/5902897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值