Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,30 @@
|
|||
procedure main()
|
||||
every i := 2097152 | 2097151 | 1 | 127 | 128 | 589723405834 | 165 | 256 do
|
||||
write(image(i)," = ",string2hex(v := uint2vlq(i))," = ",vlq2uint(v))
|
||||
end
|
||||
|
||||
procedure vlq2uint(s) #: decode a variable length quantity
|
||||
if *s > 0 then {
|
||||
i := 0
|
||||
s ? while h := ord(move(1)) do {
|
||||
if (pos(0) & h > 128) | (not pos(0) & h < 128) then fail
|
||||
i := 128 * i + h % 128
|
||||
}
|
||||
return i
|
||||
}
|
||||
end
|
||||
|
||||
procedure uint2vlq(i,c) #: encode a whole number as a variable length quantity
|
||||
if "integer" == type(-1 < i) then
|
||||
return if i = 0 then
|
||||
char((/c := 0)) | ""
|
||||
else
|
||||
uint2vlq(i/128,1) || char((i % 128) + ((/c := 0) | 128) )
|
||||
end
|
||||
|
||||
procedure string2hex(s) #: convert a string to hex
|
||||
h := ""
|
||||
every i := ord(!s) do
|
||||
h ||:= "0123456789abcdef"[i/16+1] || "0123456789abcdef"[i%16+1]
|
||||
return h
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue