Differences From
Artifact [fe958b6645]:
78 78 for i = 0, len do
79 79 var v, ok = m.shorthand.cval(s[i])
80 80 if ok == false then return 0, false end
81 81 val = (val * 64) + v
82 82 end
83 83 return val, true
84 84 end
85 +
86 +terra m.hexdigit(hb: uint8): int8
87 + var a = hb and 0x0F
88 + if a < 10 then return 0x30 + a
89 + else return 0x61 + (a-10) end
90 +end
91 +
92 +terra m.hexbyte(b: uint8): int8[2]
93 + return array(m.hexdigit((b and 0xF0) >> 4), m.hexdigit(b and 0x0F))
94 +end
95 +
96 +terra m.hexstr(src: &uint8, str: rawstring, sz: intptr)
97 + for i = 0, sz do
98 + var d = m.hexbyte(src[i])
99 + str[i*2] = d[0]
100 + str[i*2 + 1] = d[1]
101 + end
102 +end
103 +
104 +terra m.b32char(v: uint8): int8
105 + if v <= 25 then return 0x61 + v
106 + elseif v < 31 then return 0x32 + (v-26)
107 + else return 0 end
108 +end
109 +
110 +terra m.b32(v: uint64, buf: rawstring) -- 5 bytes -> 8 chars
111 + while v > 0 do
112 + var val = v % 32
113 + v = v / 32
114 + @buf = m.b32char(val)
115 + buf = buf + 1
116 + end
117 +end
118 +
119 +terra m.b32str(a: lib.mem.ptr(uint64))
120 +
121 +end
85 122
86 123 return m