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

📄 decoder.java

📁 Java实现的点对点短消息发送协议(smpp)开发包源码
💻 JAVA
字号:
// FrontEnd Plus for JAD
// DeCompiled : decoder.class

package utils;

import java.util.Date;

// Referenced classes of package utils:
//            coder, decoderException

public class decoder extends coder
{

    public short int16()//将偏移量处的字节,变成短整数字节
        throws decoderException
    {
        if(offset + 1 > size)
        {
            throw new decoderException("underrun.int16.");
        } else
        {
            short word0 = (short)((bytes[offset] & 0xff) << 8 | bytes[offset + 1] & 0xff);
            offset += 2;
            return word0;
        }
    }

    public Date UTC()//将字符串时间转换为世界标准时间
        throws decoderException
    {
        String s = asciiz(18);
        if(s == null)
            return null;
        if(s.length() == 0)
            return null;
        if(s.length() != 16 && s.length() != 18)
            throw new decoderException("length.time.");
        int i2 = 0;
        int k1;
        int l1;
        long l2;
        try
        {
            int i;
            if(s.length() == 16)
            {
                i = Integer.parseInt(s.substring(i2, i2 + 2));
                if(i < 97)
                    i += 2000;
                else
                if(i < 100)
                    i += 1900;
                i2 += 2;
            } else
            if(s.length() == 18)
            {
                i = Integer.parseInt(s.substring(i2, i2 + 4));
                i2 += 4;
            } else
            {
                return null;
            }
            int j = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            int k = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            int l = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            int i1 = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            int j1 = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            k1 = Integer.parseInt(s.substring(i2, i2 + 1));
            i2++;
            l1 = Integer.parseInt(s.substring(i2, i2 + 2));
            i2 += 2;
            i -= 1900;
            j--;
            l2 = Date.UTC(i, j, k, l, i1, j1);
        }
        catch(Exception _ex)
        {
            throw new decoderException("format.time.");
        }
        l2 += k1 * 100;
        if(s.charAt(i2) == '+')
            l2 -= l1 * 15 * 60000;
        else
            l2 += l1 * 15 * 60000;
        return new Date(l2);
    }

    public byte int8()//取得偏移量处的字符
        throws decoderException
    {
        if(offset > size)
        {
            throw new decoderException("underrun.int8.");
        } else
        {
            byte byte0 = bytes[offset];
            offset++;
            return byte0;
        }
    }

    public int int32()//取得偏移量处的32位整数
        throws decoderException
    {
        if(offset + 3 > size)
        {
            throw new decoderException("underrun.int32.");
        } else
        {
            int i = (bytes[offset] & 0xff) << 24 | (bytes[offset + 1] & 0xff) << 16 | (bytes[offset + 2] & 0xff) << 8 | bytes[offset + 3] & 0xff;
            offset += 4;
            return i;
        }
    }

    public decoder(byte abyte0[])
    {
        super(abyte0);
    }

    public String asciiz(int i)//从offset处起,转换Null结尾的字符串
        throws decoderException
    {
        byte abyte0[] = new byte[i + 1];
        int j;
        for(j = 0; j < i + 1 && offset + j < size && bytes[offset + j] != 0; j++)
            abyte0[j] = bytes[offset + j];

        if(offset + j == size)//这个检查有必要么?
            throw new decoderException("underrun.string.");
        if(j == i + 1)//这个检查有必要么?
            throw new decoderException("toolong.string.");
        offset += j + 1;
        if(j == 0)//如果i为0,返回空字符串
        {
            return null;
        } else
        {
            abyte0[j] = 0;//结尾为0,转换为以0结尾的字符串
            return new String(abyte0, 0, 0, j);
        }
    }
}

⌨️ 快捷键说明

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