 % k;
        if (i-- > 0) {
            if (p < self.DB && (d = self[i] >> p) > 0) {
                m = true;
                r = int2char(d);
            }
            while (i >= 0) {
                if (p < k) {
                    d = (self[i] & ((1 << p) - 1)) << (k - p);
                    d |= self[--i] >> (p += self.DB - k);
                }
                else {
                    d = (self[i] >> (p -= k)) & km;
                    if (p <= 0) {
                        p += self.DB;
         