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);
}
}
Gran ayuda,
gracias.
Hola, estaba revisando este código y tengo una duda con:
salida.append(“\nEntero leido: ” + leido);
que hace el “.append”? (soy nueva en java)
el append agrega al final de la cadena
Que significa el multithread y por qué no se puede usar? Estoy empezando con esto del java.
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…
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);
}
}
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]);
}
}
}
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") ;
}
}
}