2012-04-06 17 views
47

Sono perplesso e ho bisogno di occhi nuovi, non sono sicuro del perché questo codice lo stia facendo.Stringa al char array Java

String string = new String(new char[] {(char) 0x01, (char) 0x02, ... ,(char) 0xFC}); 

L'uscita è tutto ciò che dovrebbe essere fino all'ultimo numero (il 0xFC) restituisce un -4, So che è un valore esadecimale, ma se lo faccio lo stesso con 252 il valore decimale, si mi dà anche un negativo. Spero che questa sia solo una soluzione semplice e non riesco a vederlo.

Grazie in anticipo.

+1

quello che stai cercando di tornare? – Krishna

+0

Quindi stai provando a creare una stringa _da un array di caratteri? –

+0

'0xFC' è un numero intero positivo; il tipo 'char' non è firmato. Il risultato codepoint è U + 00FC - Latin Small Letter U With Diaeresis. Come stai emettendo la stringa? – McDowell

risposta

136

Una stringa a char array è così semplice come

String str = "someString"; 
char[] charArray = str.toCharArray(); 

Può spiegare un po 'di più su ciò che si sta cercando di fare?

* Aggiornamento *

se sto capendo il tuo commento, è possibile utilizzare un array di byte e un esempio è fornito.

byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array(); 

for (byte b : bytes) { 
    System.out.format("0x%x ", b); 
} 

Con il seguente output

0x65 0x10 0x29 0xf3

+0

Sto cercando di inviare un pacchetto con un array di byte o un array di caratteri per ottenere valori specifici sul dispositivo che ho sulla mia rete chiusa. Sto facendo un'app remota. serve solo quell'array in 9 byte, per dare i valori esadecimali o decimali specifici. –

+0

@CodyKeasberry Ho aggiornato la risposta – Kevin

+3

Una bella scorciatoia di quanto sopra è "stringa" .toCharArray(). Può farti risparmiare una riga di codice. –