Home > Java > Codigo Java para convertir numeros ascii a caracteres

Codigo Java para convertir numeros ascii a caracteres

Esta clase recibe un numero(ascii) y devuelve su caracter, dependiendo de cual fue la base del ascii.

Si buscas lo contrario dale click acá!!

Echo en metodos para cada función, y utilizando StringBuilder, la clase mas eficiente para concatenar Strings, siempre y cuando no se use en multithread.

Saludos…


public class AsciiToChar {
/*
* Hecho por Grekz, https://grekz.wordpress.com
* Version java 5 o superior
* Ej.
* Entrada: 61
* Salida: Entero leido: 61
* Decimal to Char: =
* Hexadecimal to Char: a
* Octal to Char: 1
*/
public static char AsciiDecToChar(int leido){
return (char)leido;
}
public static char AsciiHexToChar(int leido){
return ((char)Integer.parseInt("" + leido, 16));
}
public static char AsciiOctToChar(int leido){
return (char)Integer.valueOf("" + leido, 8).intValue();
}
public static void main(String[] args) {
int leido = new java.util.Scanner(System.in).nextInt();
StringBuilder salida= new StringBuilder();
salida.append("\nEntero leido: " + leido);

salida.append("\n\tDecimal to Char: ");
salida.append(AsciiDecToChar(leido));

salida.append("\n\tHexadecimal to Char: ");
salida.append(AsciiHexToChar(leido));

salida.append("\n\tOctal to Char: ");
salida.append(AsciiOctToChar(leido));

System.out.println(salida);
}

}

Categories: Java
  1. @Leomeza_
    February 3, 2012 at 07:46

    Gran ayuda,
    gracias.

  2. jave
    May 7, 2012 at 07:18

    Hola, estaba revisando este código y tengo una duda con:

    salida.append(“\nEntero leido: ” + leido);

    que hace el “.append”? (soy nueva en java)

  3. x
    June 9, 2012 at 00:22

    el append agrega al final de la cadena

  4. Anonymous
    July 20, 2018 at 11:49

    Que significa el multithread y por qué no se puede usar? Estoy empezando con esto del java.

  5. Anonymous
    July 25, 2018 at 18:46

    Tal y como esta planteado, no acabo de entender su funcionalidad, si es para el ejemplo que se muestra en concreto estaría bien, pero si la idea es mas generalizada esta mal…

    • Anonymous
      July 25, 2018 at 19:03

      public class Acsii {

      /**
      * @param args the command line arguments
      */
      public static void main(String[] args) {
      try {

      System.out.printf(“Introduzca el numero entre 0 y 255%n”);
      int leido = new java.util.Scanner(System.in).nextInt();
      if(leido 255){
      System.err.println(“Valor fuera de rango…FIN”);
      }
      else{
      StringBuilder salida= new StringBuilder();
      salida.append(String.format(“\nEntero leido: %d”, leido));

      salida.append(String.format(“\n\tDecimal %d to Char: “, leido));
      salida.append(AsciiDecToChar(leido));

      salida.append(String.format(“\n\tHexadecimal %s to Char: “, Integer.toHexString(leido)));
      salida.append(AsciiHexToChar(leido));

      salida.append(String.format(“\n\tOctal %s to Char: “, Integer.toOctalString(leido)));
      salida.append(AsciiOctToChar(leido));

      salida.append(“\n”);
      System.out.println(salida);
      }
      } catch (InputMismatchException e) {
      System.err.printf(“ingresar solo valores numericos%nFIN%n”) ;
      }
      }

      private static char AsciiDecToChar(int leido){
      return (char)leido;
      }
      private static char AsciiHexToChar(int leido){
      return ((char)Integer.parseInt(Integer.toHexString(leido),16));
      }
      private static char AsciiOctToChar(int leido){
      return (char)Integer.parseInt(Integer.toOctalString(leido),8);
      }
      }

  6. Anonymous
    July 27, 2018 at 01:32

    public class TablaAcsii {
    /**
    * @param args the command line arguments
    * muestra solamente caracteres imprimibles del codigo acsii
    */
    public static void main(String[] args) {
    tabla(0,30,256);
    }
    private static void tabla(int min, int max, int minTabla){
    System.out.println(cabecera());
    for(int i = min; i < max; i++ ){
    for(int j = i; j < minTabla; j+=30){
    System.out.print((j < 33 || j == 127) ? acsiiNoImprimible(j):acsiiImprimible(j));
    }
    System.out.println();
    }
    }

    private static String cabecera(){
    StringBuilder Cabecera = new StringBuilder();
    for(int n = 0; n < 9; n++){
    Cabecera.append(String.format("%-8s%-8s%-8s%-12s","DEC","HEX","OCT","CH"));
    }
    return Cabecera.toString();
    }

    private static String acsiiImprimible(int entero){
    return String.format("\033[47;34m%-8d%-8s%-8s%-12c", entero, Integer.toHexString(entero), Integer.toOctalString(entero), (char)entero);
    }

    private static String acsiiNoImprimible(int entero){
    String[] CaracteresNoImprimibles = {"NULL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT","LF","VT","FF","CR","SO","SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","ESC","FS","GS","RS","US","ESPACIO"};
    if(entero == 127){
    return String.format("\033[43;31m%-8d%-8s%-8s%-12s", entero, Integer.toHexString(entero), Integer.toOctalString(entero), "DEL");
    }else{
    return String.format("\033[43;31m%-8d%-8s%-8s%-12s", entero, Integer.toHexString(entero), Integer.toOctalString(entero), CaracteresNoImprimibles[entero]);
    }
    }
    }

  7. Anonymous
    July 27, 2018 at 03:15

    public class CreaTabla {
    private int min;
    private int max;
    private int maxTabla;

    private int getMin() {
    return min;
    }

    private void setMin(int min) {
    this.min = min;
    }

    private int getMax() {
    return max;
    }

    private void setMax(int max) {
    this.max = max;
    }

    private int getMaxTabla() {
    return maxTabla;
    }

    private void setMaxTabla(int maxTabla) {
    this.maxTabla = maxTabla;
    }

    public CreaTabla(int min, int max, int maxTabla) {
    this.setMin(min);
    this.setMax(max);
    this.setMaxTabla(maxTabla);
    }

    protected void contenido(){
    System.out.println(cabecera((getMaxTabla()/getMax())== 1 ? getMaxTabla()/getMax():(getMaxTabla()/getMax()) + 1 ));
    for(int i = getMin(); i < getMax(); i++ ){
    for(int j = i; j < getMaxTabla(); j+=30){
    System.out.print((j < 33 || j == 127) ? acsiiNoImprimible(j):acsiiImprimible(j));
    }
    System.out.println();
    }
    }

    private static String cabecera(int maxColum){
    StringBuilder Cabecera = new StringBuilder();
    for(int n = 0; n < maxColum; n++){
    Cabecera.append(String.format("\033[46;30m%-8s%-8s%-8s%-12s","DEC","HEX","OCT","CH"));
    }
    return Cabecera.toString();
    }

    private static String acsiiImprimible(int entero){
    return String.format("\033[47;34m%-8d%-8s%-8s%-12c", entero, Integer.toHexString(entero), Integer.toOctalString(entero), (char)entero);
    }

    private static String acsiiNoImprimible(int entero){
    String[] CaracteresNoImprimibles = {"NULL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT","LF","VT","FF","CR","SO","SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","ESC","FS","GS","RS","US","ESPACIO"};
    return String.format("\033[43;31m%-8d%-8s%-8s%-12s", entero, Integer.toHexString(entero), Integer.toOctalString(entero), entero == 127 ? "DEL":CaracteresNoImprimibles[entero]);
    }

    }

    public class TablaAcsii {
    /**
    * @param args the command line arguments
    * muestra solamente caracteres imprimibles del codigo acsii
    * por defecto se muestra los promeros 127
    */
    public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    int opcion;
    try{
    do{
    System.out.printf("%n*******************%nTABLA ACSII%n*******************%nSeleccione la opcion:%n\t1. Generar tabla automaticamente.%n\t2. Caracter Acsii.%n\t3. Salir%n");
    opcion = entrada.nextInt();
    switch(opcion){
    case 1: CreaTabla tabla = new CreaTabla(0,30,128);
    tabla.contenido();
    break;
    case 2: System.out.println("Ingrese un valor entre 0 y 255…");
    int dec = entrada.nextInt();
    CreaTabla car = new CreaTabla(dec,dec + 1,dec + 1);
    car.contenido();
    break;
    case 3: break;
    default:System.err.println("Valor fuera de rango…");
    }
    }
    while(opcion < 3);
    }catch(InputMismatchException e){
    System.err.printf("ingresar solo valores numericos%nFIN%n") ;
    }
    }
    }

  1. No trackbacks yet.

Leave a comment