Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Como entender el mismo ASCII en Diversos Lenguajes

Buenas
Quisiera que me ayudaran en lo Siguiente:
tengo un programa hecho en VB6 que actualmente esta en producción quiero llevar el mismo a su equivalente en JAVA pero me encuentro con la siguiente dificultad, que dicho programa requiere convertir un codigo Hexadecimal en su representación en ASCII lo cual entre ambos lenguajes no da el mismo resultado, quisiera saber si hay alguien que me pueda ayudar en esto
De antemano muchas gracias y cualquier pregunta haganmela llegar por favor

enero 2, 2015 | Unregistered CommenterElio Pena

No entiendo eso de que no da el mismo resultado. ASCII es ASCII, independientemente del lenguaje de programación.

¿Podrías poner un ejemplo de tu código de conversión en Java?.

enero 2, 2015 | Registered Commenterchoces

Como dice choces, ASCII es un estandard, y si el programa en VB6 respeto ese estandard no tendria que haber ninguna diferencia. Quizas con un ejemplo podamos ayudarte....

enero 3, 2015 | Registered Commenteralaguslaz

ASCII es un estándar que cubre los caracteres cuyo valor decimal está entre 32 y 127. Fuera de eso, ya no es ASCII, es una página de códigos variable (850, ISO-8859-1, ISO-8859-15 y Windows-1252 son las más habituales en equipos PC de Europa Occidental).

Que yo recuerde, las cadenas en Java usan Unicode, que no es ninguno de los anteriores. Visual Basic no creo que use Unicode por defecto. Danos un ejemplo de caracteres y lo vemos.

enero 3, 2015 | Registered Commenterrickiees

public class NewMain {

private static final String hexadecimal = "436f6e7665727369f36e2061204153434949";

static String convertHexToString(String hex) {
final int hexLenght = hex.length();
final StringBuilder sb = new StringBuilder(hexLenght / 2);
for (int i = 0; i < hexLenght - 1; i += 2) {
sb.append((char) Integer.parseInt(hex.substring(i, i + 2), 16));
}
return sb.toString();
}

public static void main(String[] args) {
System.out.println("Hexadecimal : " + hexadecimal);
System.out.println("ASCII : " + convertHexToString(hexadecimal));
}
}

enero 5, 2015 | Registered Commenterchoces


rpalomares@Father ~/Java $ export LANG="es_ES.UTF-8"
rpalomares@Father ~/Java $ java NewMain
Hexadecimal : 436f6e7665727369f36e2061204153434949
ASCII : Conversión a ASCII
rpalomares@Father ~/Java $ export LANG="es_ES.iso8859-2"
rpalomares@Father ~/Java $ java NewMain
Hexadecimal : 436f6e7665727369f36e2061204153434949
ASCII : Conversi?n a ASCII
rpalomares@Father ~/Java $ export LANG="es_ES.UTF-16"
rpalomares@Father ~/Java $ java NewMain
Hexadecimal : 436f6e7665727369f36e2061204153434949
ASCII : Conversi?n a ASCII

Que es a lo que me refería yo... :-) La o con tilde no es ASCII (F3 en tu ejemplo), es un carácter diferente dependiendo de la página de códigos que se utiliza. Es cierto que los caracteres más frecuentes (como las vocales acentuadas en minúscula) suelen estar en la misma posición en la mayoría de las páginas de códigos occidentales, pero los más específicos (eñe, mayúsculas acentuadas, diéresis) bailan más de una codificación a otra.

Creo que ese es el problema que se encuentra el autor del mensaje original.

enero 8, 2015 | Registered Commenterrickiees

No ha planteado ningún ejemplo concreto, ni el código Java que usa, ni si usa ASCII extendido, ni qué codificación tiene definida.
Ni siquiera se ha tomado la molestia de contestar a las preguntas que se le han hecho.
En todo caso, de haber algún problema con la conversión, estaría en la codificación definida, y no en el lenguaje de programación.

enero 8, 2015 | Registered Commenterchoces