Как преобразовать из BLOB-объекта в Bytearray и в строку - PullRequest
0 голосов
/ 05 июля 2019

Я учусь делать словарь приложения.И у меня есть небольшая база данных с 20 словами в одной таблице и 20 определений для этих слов в другой таблице.Но определения в типе BLOB.И я не могу получить его нормальный тип строки.Вот код, который я попробовал:

public byte[] word_value(int a) throws UnsupportedEncodingException {
        c = database.rawQuery("select body from items A inner join items_info B on A.id = B.id where B.id = '" + a + "';" , null);
        while (c.moveToNext()){
            byte[] blob = c.getBlob(0);
            String s = new String(blob, StandardCharsets.UTF_8);
            Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
        }
        return null;
    }

Он получает значение, но не преобразует в строку

enter image description here

Любая помощьценится

1 Ответ

0 голосов
/ 05 июля 2019

методы взрыва помогут вам

/**
 * @param data
 * @return
 */
public static String byteToHex(byte[] data) {
    StringBuilder buf = new StringBuilder();
    for (byte b : data) {
        int halfbyte = (b >>> 4) & 0x0F;
        int two_halfs = 0;
        do {
            buf.append((0 <= halfbyte) && (halfbyte <= 9) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10)));
            halfbyte = b & 0x0F;
        } while (two_halfs++ < 1);
    }
    return buf.toString();
}

/**
 * @param str
 * @return
 */
public static byte[] hexToBytes(String str) {
    if (str == null) {
        return null;
    } else if (str.length() < 2) {
        return null;
    } else {
        int len = str.length() / 2;
        byte[] buffer = new byte[len];
        for (int i = 0; i < len; i++) {
            buffer[i] = (byte) Integer.parseInt(
                    str.substring(i * 2, i * 2 + 2), 16);

        }
        return buffer;
    }
}

/**
 * @param data
 * @return
 */
public static String byteToString(byte[] data) {
    String string = null;
    try {
        string = new String(data, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        Logger.w(TAG, e);
    }
    return string;
}

/**
 * @param data
 * @return
 */
public static byte[] stringToByte(String data) {
    byte[] bytes = null;
    try {
        bytes = data.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        Logger.w(TAG, e);
    }
    return bytes;
}

/**
 * @param input
 * @return
 */
public static byte[] hexStringToByteArray(String input) {
    int len = input.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(input.charAt(i), 16) << 4)
                + Character.digit(input.charAt(i + 1), 16));
    }
    return data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...