Java - Caracteres y bytes en java

 
Vista:

Caracteres y bytes en java

Publicado por Luigikhan (2 intervenciones) el 30/12/2008 19:04:43
Hola buen dia, mi problema es el siguiente:

Mediante una aplicacion hecha en java j2SE se obtienen datos en formato hexadecimal, dichos datos se deben de convertir a caracteres US-ASCII para ser agregados a un string y posteriormente enviar ese string mediante un socket.

La aplicacion que recibe el string no esta hecha en java y no puede ser modificada;y requiere forzozamente que sean caracteres los que sean enviados en el string. Dichos caracteres deben corresponder exactamente con el valor hexadecimal.

Hago un cast a char para obtener los caracteres correspondientes de los valores hexadecimales

El problema es que los caracteres arriba de 127 no se pueden representar en el string debido a que en java no existen bytes sin signo, por lo que los primeros 127 caracteres se pueden agregar sin problemas al string pero los otros 127 restantes no. Java solo inserta signos de interrogacion en donde deberia de ir el caracter solicitado.

He intentado codificar el string y los bytes en diferentes modos, UTF, cp1252, us-ascii etc. y el unico que arroja valores ascii es el cp1252 pero los caracteres generados, a pesar de que corresponden con c++ por ejemplo, cuyos caracteres se observan en esta tabla :

http://personales.mundivia.es/papi/codigo_ascii.gif ; no son adecuados pues coloca caracteres arriba de 127 pero el valor requerido al parecer sigue estando equivocado.

¿Hay alguna manera de codificar esos 127 caracteres en el string de modo que sea 100% seguro que sus valores numericos correspondan con los valores requeridos? Si en un byte solo se puede almacenar hasta el valor 127 y forzozamente requiero un solo byte por cada caracter con valores arriba de 127 ¿como puedo codificarlo?

Por lo que solicito ayuda para encontrar un modo de resolver este problema; pues no me
encontrado la respuesta. Ya he intentado muchas maneras si exito y no se que hacer.

De antemano gracias por la atencion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Caracteres y bytes en java

Publicado por mario (622 intervenciones) el 30/12/2008 20:35:00
No se como estas haciendo la conversion pero con este codiguito puedes ver todo el ascii

for (int i = 0; i < 257; i++) {
byte[] bit = new byte[1];
bit[0] = (byte) i;
String a = new String(bit);
System.out.println("numero " + i + " = " + a);
}


saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Caracteres y bytes en java

Publicado por luigikhan (2 intervenciones) el 30/12/2008 21:12:34
Gracias por tu respuesta. Lo agradezco mucho.

Si en efecto, ese es el código que uso para hacer el cast solo que además de ese código yo codifico los bytes en diferentes modos . Por ejemplo si quiero el modo cp1252 lo que agrego es:

for(int i = 0; i<255; i++){
byte[] bit = new byte[1];
bit[0] = (byte)i;
a = new String(bit, "cp1252");
}

AL codificar los bytes en otro modo por ejemplo el US-ASCII que es el que requiero el código se modifica asi:

for(int i = 0; i<255; i++){
byte[] bit = new byte[1];
bit[0] = (byte)i;
a = new String(bit, "US-ASCII");
}

y si ejecutas asi el código solo los primeros 127 caracteres se imprimen pero no los 127 restantes no, ya que coloca signos de interrogacion y ese signo es el que se agrega.

Necesito hacer mas pruebas con esos codigos con el modo cp1252 pero las primeras pruebas fueron muy poco favorables. Por eso mi problematica es poder colocar caracteres que verdaderamente representen el valor numerico del codigo us-ascii o llamado MIME tambien.

Te agradezco cualquier sugerencia que me puedas dar y gracias por apoyarme en tu mensaje.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar