Welcome, guest | Sign In | My Account | Store | Cart
```# bin2hex --
#   converts binary to hex number
# Arguments:
#   bin		number in binary format
# Returns:
#
proc bin2hex bin {
## No sanity checking is done
array set t {
0000 0 0001 1 0010 2 0011 3 0100 4
0101 5 0110 6 0111 7 1000 8 1001 9
1010 a 1011 b 1100 c 1101 d 1110 e 1111 f
}
set diff [expr {4-[string length \$bin]%4}]
if {\$diff != 4} {
set bin [format %0\${diff}d\$bin 0]
}
regsub -all .... \$bin {\$t(&)} hex
return [subst \$hex]
}

# hex2bin --
#   converts hex number to bin
# Arguments:
#   hex		number in hex format
# Returns:
#   binary number (in chars, not binary format)
#
proc hex2bin hex {
set t [list 0 0000 1 0001 2 0010 3 0011 4 0100 \
5 0101 6 0110 7 0111 8 1000 9 1001 \
a 1010 b 1011 c 1100 d 1101 e 1110 f 1111 \
A 1010 B 1011 C 1100 D 1101 E 1110 F 1111]
regsub {^0[xX]} \$hex {} hex
return [string map -nocase \$t \$hex]
}

# hex2bin-alternate --
#   converts hex number to bin
# Arguments:
#   hex		number in hex format
# Returns:
#   binary number (in chars, not binary format)
#

proc bin2hex-alternate bin {
## No sanity checking is done
set t {
0000 0 0001 1 0010 2 0011 3 0100 4
0101 5 0110 6 0111 7 1000 8 1001 9
1010 a 1011 b 1100 c 1101 d 1110 e 1111 f
}
set diff [expr {4-[string length \$bin]%4}]
if {\$diff != 4} {
set bin [format %0\${diff}d\$bin 0]
}
return [string map \$t \$hex]
}
```