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