Vorrei convertire un array di byte nella loro rappresentazione in formato stringa, tipo
ARRAY
val 0 8 e a 2 6
pos 0 1 2 3 4 5 ... 16
STRINGA
"0 8 e a 2 6"
come si può fare?
Vorrei convertire un array di byte nella loro rappresentazione in formato stringa, tipo
ARRAY
val 0 8 e a 2 6
pos 0 1 2 3 4 5 ... 16
STRINGA
"0 8 e a 2 6"
come si può fare?
Facilmente il costruttore di String prevede la creazione della stringa attraverso un flusso di byte.
byte[] b;
--operazioni per riempire lo stream
.....
String s=new String(b);
System.out.println(s)
Ciao.
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
Innanzitutto non puoi usare il costruttore di String che riceve un byte[]. Questo serve SOLO quando i byte rappresentano "caratteri" (e il charset va anche considerato!). E non è sicuramente il tuo caso.
Se hai un byte che vale es. 14 e vuoi che nella stringa ci sia la rappresentazione in esadecimale es. "e", allora devi anche "formattare" il valore in esadecimale.
Comunque fai un ciclo e "appendi" in un StringBuffer/StringBuilder le rappresentazioni hex dei byte, mettendo uno spazio tra i valori.
P.S. mi sta venendo il dubbio. Quando dici: val 0 8 e a 2 6
cosa intendi per es. quella "e" ? Si tratta di un byte che ha valore 14 (0x0e in esadecimale) oppure ha valore 101 che in ASCII è la lettera 'e' ??
Precisa meglio.
Ultima modifica di andbin; 13-01-2017 a 11:43
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Come si fa a convertire un byte da decimale alla sua rappresentazione in esadecimale?
Giusto per chiarire: un byte non è "decimale" ... un byte è un byte, sono 8 bit. Anche il "decimale" è una rappresentazione!
Comunque la classe java.lang.Byte non ha purtroppo metodi per formattare in una determinata radice (base). Ci sono invece i metodi in java.lang.Integer:
- public static String toHexString(int i)
- public static String toString(int i, int radix)
C'è una differenza tra i due, riguarda i valori negativi.
Oppure anche la funzionalità di formattazione di Java 5 (i printf/format):
String s = String.format("%02X", byteval);
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet