2012-04-06 7 views
47

Jestem zaskoczony tym i potrzebuję świeżych oczu, nie jestem pewien, dlaczego ten kod to robi.Łańcuch do tablicy charytatywnej Java

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

Wyjście to wszystko powinno być aż ostatni numer (the 0xFC) to zwraca -4, znam jego wartość hex, ale jeśli to zrobię to samo z 252 wartość dziesiętną, to daje mi również negatywny wynik. Mam nadzieję, że to tylko proste rozwiązanie, a ja po prostu tego nie widzę.

Dziękuję z wyprzedzeniem.

+1

Co chcesz wrócić? – Krishna

+0

Więc próbujesz utworzyć String _from_ tablicę znaków? –

+0

'0xFC' jest dodatnią liczbą całkowitą; typ 'char' nie jest podpisany. Wynikowym punktem kodowym jest U + 00FC - łacińska mała litera U z Diaeresis. W jaki sposób wyprowadzasz ciąg? – McDowell

Odpowiedz

136

Łańcuch do tablicy char jest tak proste jak

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

może Pan wyjaśnić nieco więcej na temat tego, co staramy się robić?

* Aktualizacja *

jeśli jestem zrozumienie nowego komentarza można używać tablicy bajtów, a przykładem jest.

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

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

z następującymi wyjściu

0x65 0x10 0x29 0xf3

+0

Próbuję wysłać pakiet z tablicy bajtów lub tablicy char, aby uzyskać konkretne wartości do urządzenia mam w mojej zamkniętej sieci. Robię pilota aplikacji. po prostu potrzebuję tej tablicy w 9 bajtach, aby podać konkretne wartości szesnastkowe lub dziesiętne. –

+0

@CodyKeasberry Zaktualizowałem odpowiedź – Kevin

+3

Miłym skrótem powyższego jest "string" .toCharArray(). Może zaoszczędzić ci linii kodu. –

Powiązane problemy