Search in sources :

Example 46 with UTFDataFormatException

use of java.io.UTFDataFormatException in project J2ME-Loader by nikita36078.

the class Mutf8 method decode.

/**
 * Decodes bytes from {@code in} into {@code out} until a delimiter 0x00 is
 * encountered. Returns a new string containing the decoded characters.
 */
public static String decode(ByteInput in, char[] out) throws UTFDataFormatException {
    int s = 0;
    while (true) {
        char a = (char) (in.readByte() & 0xff);
        if (a == 0) {
            return new String(out, 0, s);
        }
        out[s] = a;
        if (a < '\u0080') {
            s++;
        } else if ((a & 0xe0) == 0xc0) {
            int b = in.readByte() & 0xff;
            if ((b & 0xC0) != 0x80) {
                throw new UTFDataFormatException("bad second byte");
            }
            out[s++] = (char) (((a & 0x1F) << 6) | (b & 0x3F));
        } else if ((a & 0xf0) == 0xe0) {
            int b = in.readByte() & 0xff;
            int c = in.readByte() & 0xff;
            if (((b & 0xC0) != 0x80) || ((c & 0xC0) != 0x80)) {
                throw new UTFDataFormatException("bad second or third byte");
            }
            out[s++] = (char) (((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F));
        } else {
            throw new UTFDataFormatException("bad byte");
        }
    }
}
Also used : UTFDataFormatException(java.io.UTFDataFormatException)

Aggregations

UTFDataFormatException (java.io.UTFDataFormatException)46 ByteArrayInputStream (java.io.ByteArrayInputStream)7 DataInputStream (java.io.DataInputStream)7 InputStream (java.io.InputStream)6 EOFException (java.io.EOFException)4 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)2 Nullable (android.support.annotation.Nullable)1 RMQJMSException (com.rabbitmq.jms.util.RMQJMSException)1 RMQMessageFormatException (com.rabbitmq.jms.util.RMQMessageFormatException)1 DexException (com.tencent.tinker.android.dex.DexException)1 StringData (com.tencent.tinker.android.dex.StringData)1 DataOutput (java.io.DataOutput)1 File (java.io.File)1 ObjectStreamClass (java.io.ObjectStreamClass)1 BigDecimal (java.math.BigDecimal)1 BigInteger (java.math.BigInteger)1 InetAddress (java.net.InetAddress)1 Timestamp (java.sql.Timestamp)1 Date (java.util.Date)1