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.
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


0