proc base128'encode str {
if {[string length $str]>9} {error "string must be 0..9 characters long"}
set res 0
foreach c [split $str ""] {
set res [expr {wide($res)<<7 | [scan $c %c]%128}]
}
set res
}
proc base128'decode int {
set res ""
while {$int != 0} {
set res [format %c [expr {$int % 128}]]$res
set int [expr {$int >> 7}]
}
set res
}Examples:% base128'encode "" 0 % base128'encode hello 28130883183 % base128'encode "Tcl & Tk" 47726922213894763 % base128'decode 47726922213894763 Tcl & Tk
Category Example