Jeg må konvertere en byte-matrise til streng i Android, men byte-matrisen min inneholder negative verdier.
Hvis jeg konverterer den strengen igjen til byte-array, er verdiene jeg får forskjellige fra de opprinnelige byte-arrayverdiene.
Hva kan jeg gjøre for å få riktig konvertering? Koden jeg bruker for å gjøre konverteringen er som følger:
// 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);
Jeg sitter fast i dette problemet.
Byte-matrisen din må ha noe koding. Kodingen kan ikke være ASCII hvis du har negative verdier. Når du har funnet ut av det, kan du konvertere et sett med byte til en streng ved hjelp av:
byte[] bytes = {...}
String str = new String(bytes, "UTF-8"); // for UTF-8 encoding
Det finnes en rekke kodinger du kan bruke, se på Charset-klassen i Sun javadocs.
Prøv å angi et 8-bits tegnsett i begge konverteringene. ISO-8859-1 for eksempel.