Android Unicode Convert unicode2han3last_direct(Character c)

Here you can find the source of unicode2han3last_direct(Character c)

Description

unicodehanlasdirect

Declaration

static List<Byte> unicode2han3last_direct(Character c) 

Method Source Code

//package com.java2s;

import java.util.Arrays;

import java.util.List;

public class Main {
    final static Byte first_set[][] = { { (byte) 233 },
            { (byte) 233, (byte) 233 }, { (byte) 230 }, { (byte) 243 },
            { (byte) 243, (byte) 243 }, { (byte) 247 }, { (byte) 231 },
            { (byte) 185 }, { (byte) 185, (byte) 185 }, { (byte) 236 },
            { (byte) 236, (byte) 236 }, { (byte) 232 }, { (byte) 234 },
            { (byte) 234, (byte) 234 }, { (byte) 237 }, { (byte) 174 },
            { (byte) 165 }, { (byte) 238 }, { (byte) 235 } };
    final static Byte middle_set[][] = { { (byte) 228 }, { (byte) 240 },
            { (byte) 180 }, { (byte) 197 }, { (byte) 242 }, { (byte) 225 },
            { (byte) 227 }, { (byte) 181 }, { (byte) 244 },
            { (byte) 244, (byte) 228 }, { (byte) 244, (byte) 240 },
            { (byte) 244, (byte) 223 }, { (byte) 178 }, { (byte) 224 },
            { (byte) 224, (byte) 242 }, { (byte) 224, (byte) 225 },
            { (byte) 224, (byte) 226 }, { (byte) 179 }, { (byte) 229 },
            { (byte) 182 }, { (byte) 226 } };
    final static Byte last_set[][] = { {}, { (byte) 246 }, { (byte) 159 },
            { (byte) 244 }, { (byte) 241 }, { (byte) 195 }, { (byte) 209 },
            { (byte) 191 }, { (byte) 245 }, { (byte) 190 }, { (byte) 228 },
            { (byte) 194 }, { (byte) 210 }, { (byte) 163 }, { (byte) 162 },
            { (byte) 208 }, { (byte) 248 }, { (byte) 177 }, { (byte) 214 },
            { (byte) 239 }, { (byte) 176 }, { (byte) 223 }, { (byte) 161 },
            { (byte) 216 }, { (byte) 193 }, { (byte) 213 }, { (byte) 207 },
            { (byte) 175 } };
    final static Byte single_set[][] = { { (byte) 0xE9 },
            { (byte) 233, (byte) 233 }, { (byte) 233, (byte) 236 },
            { (byte) 230 }, { (byte) 230, (byte) 234 },
            { (byte) 230, (byte) 235 }, { (byte) 243 },
            { (byte) 243, (byte) 243 }, { (byte) 247 },
            { (byte) 247, (byte) 233 }, { (byte) 247, (byte) 231 },
            { (byte) 247, (byte) 185 }, { (byte) 247, (byte) 236 },
            { (byte) 247, (byte) 165 }, { (byte) 247, (byte) 238 },
            { (byte) 247, (byte) 235 }, { (byte) 231 }, { (byte) 185 },
            { (byte) 185, (byte) 185 }, { (byte) 185, (byte) 236 },
            { (byte) 236 }, { (byte) 236, (byte) 236 }, { (byte) 232 },
            { (byte) 234 }, { (byte) 234, (byte) 234 }, { (byte) 237 },
            { (byte) 174 }, { (byte) 165 }, { (byte) 238 }, { (byte) 235 },
            { (byte) 228 }, { (byte) 240 }, { (byte) 180 }, { (byte) 197 },
            { (byte) 242 }, { (byte) 225 }, { (byte) 227 }, { (byte) 181 },
            { (byte) 225 }, { (byte) 244, (byte) 228 },
            { (byte) 244, (byte) 240 }, { (byte) 244, (byte) 223 },
            { (byte) 178 }, { (byte) 224 }, { (byte) 224, (byte) 242 },
            { (byte) 224, (byte) 225 }, { (byte) 224, (byte) 226 },
            { (byte) 179 }, { (byte) 229 }, { (byte) 182 }, { (byte) 226 } };

    static List<Byte> unicode2han3last_direct(Character c) {
        Integer code = (int) c.charValue();
        if (code >= 44032 && code <= 55203) { // Korean Area
            code -= 44032;//from w w  w .j a v a 2s. c o m
            Integer last = code % 28;
            code = (code / 28);
            Integer middle = code % 21;
            Integer first = code / 21;
            return Arrays.asList(concatAll(first_set[first],
                    middle_set[middle], last_set[last]));
        }
        if (code >= 12593 && code <= 12643) { // child sound
            return Arrays.asList(single_set[code - 12593]);
        }
        return Arrays.asList(code.byteValue());
    }

    public static <T> T[] concatAll(T[] first, T[]... rest) {
        int totalLength = first.length;
        for (T[] array : rest) {
            totalLength += array.length;
        }
        T[] result = Arrays.copyOf(first, totalLength);
        int offset = first.length;
        for (T[] array : rest) {
            System.arraycopy(array, 0, result, offset, array.length);
            offset += array.length;
        }
        return result;
    }
}

Related

  1. bytes2StringUNICODE(byte[] buf, int offset, int length, boolean bigEndian)
  2. asciiToBCD(byte[] ascii_buf, int asc_offset, byte[] bcd_buf, int bcd_offset, int conv_len, int type)
  3. convertToUnicodeByteArray(String s)
  4. convertToUnicode(byte[] b, boolean includesNull)
  5. stringToUnicode(String strText)
  6. unicode2han_str(String str)
  7. unicodeEscape(String s)
  8. getEmojiByUnicode(int unicode)
  9. hiraganaToKatakana(byte[] b)