2011-04-28 20 views
5

Tengo una serie de variables de matriz de bytes [] que necesito convertir en almacenamientos intermedios de cadena.Mejor forma de convertir una matriz de bytes [] en una memoria de cadenas

¿Hay algún método para este tipo de conversión?

Gracias

Gracias a todos por su responses..However No me he expresado con claridad .... estoy usando algunos [] matrices de bytes pre-definidos como public static "en" la clase declaración para mi programa java. estos "campos" se reutilizan durante la "vida" del proceso. Como el programa emite mensajes de estado (escritos en un archivo), he definido un buffer de cadena (mesg_data) que solía formatear un mensaje de estado. Así como el programa ejecuta me trataron msg2 = String (byte_array2) me sale un error de compilación: no puede encontrar el símbolo símbolo : String método (byte []) ubicación: clase APPC_LU62.java.LU62XnsCvr convrsID = String (conversation_ID);

ejemplo:

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

así que no puedo usar una "dinámica" de definir una variable de cadena debido a que la misma variable se utiliza en múltiples ocurrencias.

espero sido claro Muchísimas gracias

individuo

+0

necesita la representación de cadena de bytes? o cada byte representa un char? – Dave

+0

Tantas respuestas duplicadas ... –

Respuesta

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

¿Por qué se bajó este valor? Debido a la falta de codificación de caracteres? – helpermethod

+2

Sí, debe especificar la codificación de caracteres. Si desea un mapa de bytes a un carácter, utilice la codificación "US-ASCII". Si no especifica la codificación, puede obtener resultados diferentes en diferentes entornos. En cualquier caso, especificar "US-ASCII" lo deja en claro. – AgilePro

3

puede convertirlo a un String directamente

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

y luego convertir a un StringBuffer

StringBuffer buffer = new StringBuffer(mystring) 
5

Hay una construcción tor que una matriz de bytes y la codificación:

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

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

Para traducir bytes a caracteres que necesita para especificar la codificación: el esquema por el cual secuencias (típicamente de longitud 1,2 o 3) de 0-255 valores (que es: secuencia de bytes) se asignan a los caracteres. UTF-8 es probablemente la mejor opción como opción predeterminada.

0

Depende por completo de la codificación de caracteres, pero usted quiere:

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

Esto funcionaría para los valores de US-ASCII.

Ver Charset para otras codificaciones de caracteres válidos (por ejemplo, UTF-8)

1

Usted puede utilizar

str = new String(bytes) 

Por thewhat el código anterior es la creación de una serie Java (es decir, UTF-16) con la codificación de caracteres de plataforma predeterminada.

Si la matriz de bytes se creó a partir de una cadena codificada en la codificación de caracteres predeterminada de la plataforma, esto funcionará bien.

Si no es necesario especificar el carácter correcto de codificación (charset) como

String str = new String (byte [] bytes, Charset charset) 
Cuestiones relacionadas