"Android" sistemoje turiu konvertuoti baitų masyvą į eilutę, tačiau mano baitų masyve yra neigiamų reikšmių.
Jei vėl konvertuoju tą eilutę į baitų masyvą, gaunamos reikšmės skiriasi nuo pradinių baitų masyvo reikšmių.
Ką daryti, kad būtų tinkamai konvertuojama? Kodas, kurį naudoju konvertavimui atlikti, yra toks:
// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);
// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++)
System.out.println("by1["+i+"] >> "+str1);
Man iškilo ši problema.
Jūsų baitų masyvas turi būti koduojamas. Kodavimas negali būti ASCII, jei turite neigiamas reikšmes. Kai tai išsiaiškinsite, galite konvertuoti baitų rinkinį į eilutę naudodami:
byte[] bytes = {...}
String str = new String(bytes, "UTF-8"); // for UTF-8 encoding
Yra daugybė kodavimų, kuriuos galite naudoti, pažiūrėkite į Sun javadocs klasę Charset.
Bandykite nurodyti 8 bitų simbolių rinkinį abiejuose konvertavimuose. Pavyzdžiui, ISO-8859-1.