2011-04-28 14 views
5

Mam wiele zmiennych tablicy bajtu [], które muszę przekonwertować na bufory ciągów.Jak najlepiej konwertować tablicę bajtów [] do bufora ciągów znaków

Czy istnieje metoda dla tego typu konwersji?

Dzięki

Dziękuję wszystkim za responses..However ja nie wyraziłem się jasno .... Używam kilka byte [] tablic predefiniowanych jako public static „pod” klasy deklaracja dla mojego programu java. te "pola" są ponownie wykorzystywane podczas "życia" procesu. Gdy program wyświetla komunikaty o stanie (zapisane w pliku), zdefiniowałem bufor ciągów znaków (mesg_data), który służy do formatowania komunikatu o stanie. Tak jak program wykonuje Próbowałem MSG2 = String (byte_array2) otrzymuję błąd kompilatora: nie może znaleźć symbol symbol: Metoda String (byte []) lokalizacja: Klasa APPC_LU62.java.LU62XnsCvr convrsID = String (conversation_ID);

przykład:

public class LU62XnsCvr extends Object 
      . 
      . 
static String convrsID ; 
static byte[] conversation_ID = new byte[8] ; 

Więc nie mogę użyć „dynamiczny” zdefiniować zmiennej łańcucha ponieważ ta sama zmienna jest używana w wielu wystąpień .

Mam nadzieję, że wyraziłem się jasno Dzięki kiedykolwiek tyle

Guy

+0

potrzebujesz bajtowy ciąg znaków reprezentujący? lub każdy bajt reprezentuje znak? – Dave

+0

Tak wiele duplikatów odpowiedzi ... –

Odpowiedz

6
String s = new String(myByteArray, "UTF-8"); 
StringBuilder sb = new StringBuilder(s); 
+1

Dlaczego zostało to odrzucone? Z powodu braku kodowania znaków? – helpermethod

+2

Tak, należy określić kodowanie znaków. Jeśli chcesz, aby jeden bajt mapował do jednego znaku, użyj kodowania "US-ASCII". Jeśli nie określisz kodowania, możesz uzyskać różne wyniki w różnych środowiskach. W każdym razie określenie "US-ASCII" wyjaśnia. – AgilePro

3

Można włączyć go do String bezpośrednio

byte[] bytearray 
.... 
String mystring = new String(bytearray) 

a następnie przekonwertować na StringBuffer

StringBuffer buffer = new StringBuffer(mystring) 
5

Istnieje konstrukcja Tor że tablica bajtów i kodowanie:

byte[] bytes = new byte[200]; 
//... 

String s = new String(bytes, "UTF-8"); 

W celu przełożenia bajtów do postaci, które należy określić kodowania: w systemie, w którym sekwencje (typowo o długości 1,2 lub 3) 0-255 wartości (to to: sekwencja bajtów) są odwzorowane na znaki. UTF-8 to prawdopodobnie najlepszy zakład jako domyślny.

0

To zależy wyłącznie od kodowania znaków, ale chcesz:

String value = new String(bytes, "US-ASCII"); 

to będzie działać dla wartości US-ASCII.

Zobacz Charset innych kodowań ważny znakowych (np UTF-8)

1

Możesz użyć

str = new String(bytes) 

Przez thewhat powyższy kod nie jest stworzenie String Java (tj UTF-16) z domyślnym kodowaniem znaków platformy.

Jeśli tablica bajtów została utworzona z łańcucha zakodowanego w domyślnym kodowaniu znaków platformy, to będzie działało dobrze.

Jeśli nie chcesz, aby określić odpowiednie kodowanie znaków (zestaw znaków) jako

String str = new String (byte [] bytes, Charset charset) 
Powiązane problemy