all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,23 @@
|
|||
package require Tcl 8.5
|
||||
|
||||
proc vlqEncode number {
|
||||
if {$number < 0} {error "negative not supported"}
|
||||
while 1 {
|
||||
lappend digits [expr {$number & 0x7f}]
|
||||
if {[set number [expr {$number >> 7}]] == 0} break
|
||||
}
|
||||
set out [format %c [lindex $digits 0]]
|
||||
foreach digit [lrange $digits 1 end] {
|
||||
set out [format %c%s [expr {0x80+$digit}] $out]
|
||||
}
|
||||
return $out
|
||||
}
|
||||
proc vlqDecode chars {
|
||||
set n 0
|
||||
foreach c [split $chars ""] {
|
||||
scan $c %c c
|
||||
set n [expr {($n<<7) | ($c&0x7f)}]
|
||||
if {!($c&0x80)} break
|
||||
}
|
||||
return $n
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
proc numtohex {num} {
|
||||
binary scan [string trimleft [binary format W $num] \0] H* hexEncoded
|
||||
regsub -all "..(?=.)" $hexEncoded "&:"
|
||||
}
|
||||
proc strtohex {string} {
|
||||
binary scan $string H* hexEncoded
|
||||
regsub -all "..(?=.)" $hexEncoded "&:"
|
||||
}
|
||||
foreach testcase {
|
||||
123
|
||||
254 255 256 257
|
||||
65534 65535 65536 65537
|
||||
2097152 2097151
|
||||
12345678901234566789
|
||||
} {
|
||||
set encoded [vlqEncode $testcase]
|
||||
binary scan $encoded H* hexEncoded
|
||||
regsub -all {..(?=.)} $hexEncoded &: hexEncoded
|
||||
set decoded [vlqDecode $encoded]
|
||||
puts "$testcase ([numtohex $testcase]) ==>\
|
||||
[strtohex $encoded] ([string length $encoded] bytes) ==>\
|
||||
$decoded"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue