Hex faylini ikkita qatorli Android, Java-ga qanday qilib o'zgartiraman?

Belgilar belgilarini .hex faylidan bayt qatoriga aylantirmoqchiman. Men ushbu kodni ishlataman, lekin natijada faylimdagi bir xil ramz emas.

Mening kodim:

    public byte[] getResource(int id, Context context) throws IOException {
    Resources resources = context.getResources();
    InputStream is = resources.openRawResource(id);

    ByteArrayOutputStream bout = new ByteArrayOutputStream();

    byte[] readBuffer = new byte[2 * 1024 * 1024];
    byte[] data;

    try {
        int read;
        do {
            read = is.read(readBuffer, 0, readBuffer.length);
            if (read == -1) {

                break;


            }
            String hex = new String(readBuffer);
            data = hexStringToByteArray(hex);
            bout.write(data);
           //  bout.write(readBuffer, 0, read);
        } while (true);

        return bout.toByteArray();
    } finally {
        is.close();
    }
}

public static byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len/2];
    for (int i = 0; i < len; i += 2) {
        data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                + Character.digit(s.charAt(i + 1), 16));
    }
    return data;
}

.Hex faylimdan dastlabki 3 qator

: 020000040800F2   : 20000000103C0020650200081502000817020008190200081B0200081D0200080000000056   : 200020000000000000000000000000001F020008210200080000000023020008714A00087C

Ammo natija qatorini tekshirganimda, buni ko'rib turibman:  -16, 60, 0, 32, 101, 2, 0, 8, 21 ...

Xato qayerda? Meni to'g'ri ko'rsating!

0
matn faylingiz mavjud bo'lsa, ushbu kodni matnni Reader bilan o'qish kerak. Faylingizning har bir satrini, ehtimol, ikkita nuqta bilan boshlayotganligiga e'tibor bering, lekin hozirda siz buni olti raqam sifatida ko'rib chiqasiz.
qo'shib qo'ydi muallif Jon Skeet, manba
matn faylingiz mavjud bo'lsa, ushbu kodni matnni Reader bilan o'qish kerak. Faylingizning har bir satrini, ehtimol, ikkita nuqta bilan boshlayotganligiga e'tibor bering, lekin hozirda siz buni olti raqam sifatida ko'rib chiqasiz.
qo'shib qo'ydi muallif Jon Skeet, manba
Xo'sh, sizning kodingiz faylni InputStream dan o'qish va baytlarni satrlarga qo'lda aylantirish kabi ikkilangan fayl kabi o'qiydi. Faylingiz satrlarda ko'rinadi, shuning uchun uni BufferedReader qatoriga qarab satrni o'qimaysiz? Keyin har bir satrda yo'g'on ichakni kesish kerak ...
qo'shib qo'ydi muallif Jon Skeet, manba
Xo'sh, sizning kodingiz faylni InputStream dan o'qish va baytlarni satrlarga qo'lda aylantirish kabi ikkilangan fayl kabi o'qiydi. Faylingiz satrlarda ko'rinadi, shuning uchun uni BufferedReader qatoriga qarab satrni o'qimaysiz? Keyin har bir satrda yo'g'on ichakni kesish kerak ...
qo'shib qo'ydi muallif Jon Skeet, manba
Xo'sh, sizning kodingiz faylni InputStream dan o'qish va baytlarni satrlarga qo'lda aylantirish kabi ikkilangan fayl kabi o'qiydi. Faylingiz satrlarda ko'rinadi, shuning uchun uni BufferedReader qatoriga qarab satrni o'qimaysiz? Keyin har bir satrda yo'g'on ichakni kesish kerak ...
qo'shib qo'ydi muallif Jon Skeet, manba
@JonSkeet Fikringiz uchun tashakkur, lekin bir oz ko'proq tushuntirish mumkin
qo'shib qo'ydi muallif MrStuff88, manba
@JonSkeet Fikringiz uchun tashakkur, lekin bir oz ko'proq tushuntirish mumkin
qo'shib qo'ydi muallif MrStuff88, manba
@JonSkeet Fikringiz uchun tashakkur, lekin bir oz ko'proq tushuntirish mumkin
qo'shib qo'ydi muallif MrStuff88, manba

6 javoblar

Avval faylning barcha ma'lumotlarini o'qib chiqing va barcha noto'g'ri belgilarni (':') stringdan @pitfall so'zini o'chirib oling va stringda saqlang va keyin quyidagi narsalarni qiling.

String s="yourStringFromFile";
byte[] b = new BigInteger(s,16).toByteArray();
1
qo'shib qo'ydi

Avval faylning barcha ma'lumotlarini o'qib chiqing va barcha noto'g'ri belgilarni (':') stringdan @pitfall so'zini o'chirib oling va stringda saqlang va keyin quyidagi narsalarni qiling.

String s="yourStringFromFile";
byte[] b = new BigInteger(s,16).toByteArray();
1
qo'shib qo'ydi

Avval faylning barcha ma'lumotlarini o'qib chiqing va barcha noto'g'ri belgilarni (':') stringdan @pitfall so'zini o'chirib oling va stringda saqlang va keyin quyidagi narsalarni qiling.

String s="yourStringFromFile";
byte[] b = new BigInteger(s,16).toByteArray();
1
qo'shib qo'ydi

Hex stringdan barcha noto'g'ri belgilarni (masalan, ':') olib tashlashingiz kerak.

hexStringToByteArray(":020000040800F") -> [-16, 32, 0, 0, 64, -128, 15] hexStringToByteArray("020000040800F2") -> [2, 0, 0, 4, 8, 0, -14]

0
qo'shib qo'ydi

Hex stringdan barcha noto'g'ri belgilarni (masalan, ':') olib tashlashingiz kerak.

hexStringToByteArray(":020000040800F") -> [-16, 32, 0, 0, 64, -128, 15] hexStringToByteArray("020000040800F2") -> [2, 0, 0, 4, 8, 0, -14]

0
qo'shib qo'ydi

Hex stringdan barcha noto'g'ri belgilarni (masalan, ':') olib tashlashingiz kerak.

hexStringToByteArray(":020000040800F") -> [-16, 32, 0, 0, 64, -128, 15] hexStringToByteArray("020000040800F2") -> [2, 0, 0, 4, 8, 0, -14]

0
qo'shib qo'ydi