private void AppendDigits (int start, int end, StringBuilder sb)
{
if (start >= end)
return;
int i = sb.Length + (end - start);
sb.Length = i;
end += _offset;
start += _offset;
for (int next = start + 8 - (start & 0x7); ; start = next, next += 8) {
uint v;
if (next == 8)
v = _val1;
else if (next == 16)
v = _val2;
else if (next == 24)
v = _val3;
else if (next == 32)
v = _val4;
else
v = 0;
v >>= (start & 0x7) << 2;
if (next > end)
next = end;
sb [--i] = (char)('0' | v & 0xf);
switch (next - start) {
case 8:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 7;
case 7:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 6;
case 6:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 5;
case 5:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 4;
case 4:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 3;
case 3:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 2;
case 2:
sb [--i] = (char)('0' | (v >>= 4) & 0xf);
goto case 1;
case 1:
if (next == end)
return;
continue;
}
}
}