⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.java

📁 二维QR条码项目的J2ME源代码。软件包括1.核心QR码编/解库
💻 JAVA
字号:
// Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov  Date: 12/6/2006 9:56:30 AM
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 

package jp.sourceforge.qrcode.reader;

import java.io.ByteArrayOutputStream;

public final class a
{

    public a(int ai[], int i)
    {
        c = -1;
        d = 0;
        e = 7;
        f = 0;
        a = ai;
        b = i;
    }

    private int a(int i)
        throws ArrayIndexOutOfBoundsException
    {
        if(i < e + 1)
        {
            int j = 0;
            for(int i1 = 0; i1 < i; i1++)
                j += 1 << i1;

            j <<= (e - i) + 1;
            int j1 = (a[d] & j) >> (e - i) + 1;
            e -= i;
            return j1;
        }
        if(i < e + 1 + 8)
        {
            int k = 0;
            for(int k1 = 0; k1 < e + 1; k1++)
                k += 1 << k1;

            int l1 = (a[d] & k) << i - (e + 1);
            d++;
            l1 += a[d] >> 8 - (i - (e + 1));
            e = e - i % 8;
            if(e < 0)
                e = 8 + e;
            return l1;
        }
        if(i < e + 1 + 16)
        {
            int l = 0;
            int i2 = 0;
            for(int j2 = 0; j2 < e + 1; j2++)
                l += 1 << j2;

            int k2 = (a[d] & l) << i - (e + 1);
            d++;
            int l2 = a[d] << i - (e + 1 + 8);
            d++;
            for(int i3 = 0; i3 < i - (e + 1 + 8); i3++)
                i2 += 1 << i3;

            i2 <<= 8 - (i - (e + 1 + 8));
            int j3 = (a[d] & i2) >> 8 - (i - (e + 1 + 8));
            int k3 = k2 + l2 + j3;
            e = e - (i - 8) % 8;
            if(e < 0)
                e = 8 + e;
            return k3;
        } else
        {
            return 0;
        }
    }

    private int b()
        throws ArrayIndexOutOfBoundsException
    {
        return a(4);
    }

    private int b(int i)
        throws ArrayIndexOutOfBoundsException
    {
        switch(i)
        {
        case 1: // '\001'
            if(b <= 9)
                return a(10);
            if(b >= 10 && b <= 13)
                return a(12);
            // fall through

        case 2: // '\002'
            if(b <= 9)
                return a(9);
            if(b >= 10 && b <= 13)
                return a(11);
            // fall through

        case 4: // '\004'
            if(b <= 9)
                return a(8);
            if(b >= 10 && b <= 13)
                return a(16);
            // fall through

        case 8: // '\b'
            if(b <= 9)
                return a(8);
            if(b >= 10 && b <= 13)
                return a(10);
            // fall through

        case 3: // '\003'
        case 5: // '\005'
        case 6: // '\006'
        case 7: // '\007'
        default:
            return 0;
        }
    }

    public final String a()
        throws ArrayIndexOutOfBoundsException
    {
        String s = "";
        boolean flag = true;
        do
        {
            c = b();
            if(c != 0 || flag)
            {
                if(c != 1 && c != 2 && c != 4 && c != 8)
                    c = 4;
                flag = false;
                f = b(c);
                switch(c)
                {
                case 1: // '\001'
                    s = s + c(f);
                    break;

                case 2: // '\002'
                    s = s + d(f);
                    break;

                case 4: // '\004'
                    s = s + e(f);
                    break;

                case 8: // '\b'
                    s = s + f(f);
                    break;
                }
            } else
            {
                return s;
            }
        } while(true);
    }

    private String c(int i)
        throws ArrayIndexOutOfBoundsException
    {
        int j = i;
        int k = 0;
        String s = "";
        do
        {
            if(j >= 3)
            {
                if((k = a(10)) < 100)
                    s = s + "0";
                if(k < 10)
                    s = s + "0";
                j -= 3;
            } else
            if(j == 2)
            {
                if((k = a(7)) < 10)
                    s = s + "0";
                j -= 2;
            } else
            if(j == 1)
            {
                k = a(4);
                j--;
            }
            if(k == 0)
                break;
            s = s + Integer.toString(k);
        } while(j > 0);
        return s;
    }

    private String d(int i)
        throws ArrayIndexOutOfBoundsException
    {
        int j = i;
        boolean flag = false;
        String s = "";
        char ac[] = {
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 
            'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', 
            '+', '-', '.', '/', ':'
        };
        do
            if(j > 1)
            {
                int k;
                int i1 = (k = a(11)) / 45;
                int j1 = k % 45;
                s = s + String.valueOf(ac[i1]);
                s = s + String.valueOf(ac[j1]);
                j -= 2;
            } else
            if(j == 1)
            {
                int l = a(6);
                s = s + String.valueOf(ac[l]);
                j--;
            }
        while(j > 0);
        return s;
    }

    private String e(int i)
        throws ArrayIndexOutOfBoundsException
    {
        int j = i;
        boolean flag = false;
        ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
        boolean flag1 = true;
        do
        {
            int k;
            if((k = a(8)) == 0)
                flag1 = false;
            else
                bytearrayoutputstream.write((byte)k);
            if(--j == 0)
                flag1 = false;
        } while(flag1);
        String s = null;
        try
        {
            s = new String(bytearrayoutputstream.toByteArray(), "UTF-8");
        }
        catch(Exception _ex)
        {
            s = new String(bytearrayoutputstream.toByteArray());
        }
        return s;
    }

    private String f(int i)
        throws ArrayIndexOutOfBoundsException
    {
        int j = i;
        boolean flag = false;
        String s = "";
        do
        {
            int k;
            int l = (k = a(13)) % 192;
            int i1;
            int j1;
            int k1;
            if((j1 = ((i1 = k / 192) << 8) + l) + 33088 <= 40956)
                k1 = j1 + 33088;
            else
                k1 = j1 + 49472;
            byte abyte0[];
            (abyte0 = new byte[2])[0] = (byte)(k1 >> 8);
            abyte0[1] = (byte)(k1 & 0xff);
            s = s + new String(abyte0);
        } while(--j > 0);
        return s;
    }

    int a[];
    int b;
    int c;
    int d;
    int e;
    int f;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -