User Tag List

Resultados 1 al 8 de 8

Tema: Ayuda para cambiar carácteres de un texto

  1. #1

    Fecha de ingreso
    Nov 2004
    Mensajes
    865
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    13
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts

    Ayuda para cambiar carácteres de un texto

    Hola!

    Estoy haciendo una modificación a una ROM antigua con un editor hexadecimal y necesito cambiar bastante texto. Tengo el equivalente de cada carácter a su byte, entonces lo que quiero hacer es un programa simple que tras escribir unas palabras y darle a enter u otra tecla me devuelva los bytes para no tener que hacer la conversión a mano. Es decir, por ejemplo poner:

    ¡Hola mundo!

    Me devuelva:

    E5 87 AE AB A0 7F AC B4 AD A3 AE E7

    Y lo pueda copiar al portapapeles.



    Sólo sé un poco de Java de varios tutoriales pero hace años que no toco eclipse y no salí de los ejemplos con texto. ¿Alguien me puede ayudar?

  2. #2

    Fecha de ingreso
    Jun 2004
    Ubicación
    Vivo en el pito foro...
    Mensajes
    20,686
    Mencionado
    70 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    230
    Agradecer Thanks Received 
    742
    Thanked in
    Agradecido 466 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    28
    ¿De dónde sale que ¡Hola mundo! sea E5 87 AE AB A0 7F AC B4 AD A3 AE E7?

    Si no, googlea "string to hex online" y hay chorrocientas páginas que te lo hacen: http://codebeautify.org/string-hex-converter/cbd7cee3

    Java es muy mala herramienta para hacer programas pequeños, te va mejor un python.
    Última edición por pakoito; 28/04/2016 a las 03:13

  3. #3

    Fecha de ingreso
    Mar 2005
    Mensajes
    3,145
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    29
    Thanked in
    Agradecido 19 veces en [ARG:2 UNDEFINED] posts
    Esto es trabajo para un one-liner en Perl o shell script, ya que en Java vas a escribir más código "de relleno" que programa en sí (aunque no por ello es mala herramienta). Más que malas herramientas lo que hay son malos programadores

    Un saludo, Alex

    edito: por si insistes en hacerlo en Java, esto es lo que sale en unos minutillos. El texto entra como primer parámetro por la línea de comandos (estilo ToHex "Hello, World!"), si lo prefieres de otra manera, feel free

    Código:
    package meh;
    
    public final class ToHex
    { /* ToHex */
    
      public static final void main(final String[] i_commandLineArguments)
      { /* main */
        String input = null;
        char[] inputCharacters = {};
        StringBuilder output = null;
    
        input = i_commandLineArguments[0];
        inputCharacters = input.toCharArray();
        output = new StringBuilder();
        for (final char character: inputCharacters)
        { /* for */
          output.append(String.format("%02x", (int) character));
        } /* for */
        System.out.println(output);
      } /* main */
    
    } /* ToHex */
    Última edición por PharaOnyx; 02/05/2016 a las 14:52

  4. Los siguientes 2 usuarios agradecen a PharaOnyx este post:

    Montblancx (02/05/2016), ^MiSaTo^ (28/04/2016)

  5. #4

    Fecha de ingreso
    Apr 2007
    Ubicación
    Rostovillar
    Mensajes
    3,783
    Mencionado
    11 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,016
    Agradecer Thanks Received 
    407
    Thanked in
    Agradecido 256 veces en [ARG:2 UNDEFINED] posts
    En sed

    echo '¡Hola mundo!' | sed 's/¡/E5/g
    s/H/87/g
    s/o/AE/g
    s/l/AB/g
    s/a/A0/g
    s/ /7F/g
    s/m/AC/g
    s/u/B4/g
    s/n/AD/g
    s/d/A3/g
    s/!/E7/g' | sed 's/.\{2\}/& /g'
    Buy this car to drive to work. Drive to work to pay for this car.

  6. El siguiente usuario agradece a Nathrezim este mensaje:

    Montblancx (02/05/2016)

  7. #5

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,451
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    87
    Agradecer Thanks Received 
    161
    Thanked in
    Agradecido 94 veces en [ARG:2 UNDEFINED] posts
    En Python:

    >>> import binascii
    >>> binascii.hexlify(b'Hola mundo!')
    '486f6c61206d756e646f21'
    Última edición por hardyx; 30/04/2016 a las 23:31

  8. El siguiente usuario agradece a hardyx este mensaje:

    Montblancx (02/05/2016)

  9. #6

    Fecha de ingreso
    Nov 2004
    Mensajes
    865
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    13
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por pakoito Ver mensaje
    ¿De dónde sale que ¡Hola mundo! sea E5 87 AE AB A0 7F AC B4 AD A3 AE E7?

    Si no, googlea "string to hex online" y hay chorrocientas páginas que te lo hacen: http://codebeautify.org/string-hex-converter/cbd7cee3

    Java es muy mala herramienta para hacer programas pequeños, te va mejor un python.
    Así es como funciona en la ROM que estoy modificando. Usa tiles como letras y cada una tiene su valor, no es ASCII:

    80=A
    81=B
    82=C
    83=D
    84=E
    85=F
    86=G
    87=H
    88=I
    89=J

    ...

    A0=a
    A1=b
    A2=c
    A3=d
    A4=e
    A5=f
    A6=g
    A7=h
    A8=i
    A9=j

    ...

    E0='
    E3=-
    E4=¿
    E5=¡
    E6=?
    E7=!



    Etc..


    Voy a probar lo que me habéis puesto creo que lo que ha puesyo Nathrezim es lo que más se parece a lo que buscaba. No hace falta que sea Java, pero es el único que conozco en caso de tener que escribirlo yo ^^U
    Última edición por Montblancx; 02/05/2016 a las 05:26

  10. #7

    Fecha de ingreso
    Mar 2005
    Mensajes
    3,145
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    29
    Thanked in
    Agradecido 19 veces en [ARG:2 UNDEFINED] posts
    Código:
    package meh;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public final class ToHex
    { /* ToHex */
    
      private static Map<Character, String> lookupMap = null;
    
      private static final void initializeTable()
      { /* initializeTable */
        (ToHex.lookupMap) = new HashMap<Character, String>();
        (ToHex.lookupMap).put('A', "80");
        (ToHex.lookupMap).put('B', "81");
        (ToHex.lookupMap).put('C', "82");
        (ToHex.lookupMap).put('D', "83");
        // etc.
      } /* initializeTable */
    
      public static final void main(final String[] i_commandLineArguments)
      { /* main */
        String input = null;
        char[] inputCharacters = {};
        StringBuilder output = null;
    
        ToHex.initializeTable();
        input = i_commandLineArguments[0];
        inputCharacters = input.toCharArray();
        output = new StringBuilder();
        for (final char character: inputCharacters)
        { /* for */
          output.append((ToHex.lookupMap).get(Character.valueOf(character)));
        } /* for */
        System.out.println(output);
      } /* main */
    
    } /* ToHex */
    Un saludo, Alex

  11. #8

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,576
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,678
    Agradecer Thanks Received 
    1,932
    Thanked in
    Agradecido 1,294 veces en [ARG:2 UNDEFINED] posts
    Pues si no es ASCII lo primero que deberías hacer es sacar una tabla con el código que le corresponde a cada letra y despues hacer el programa que use esa tabla para convertir los valores.

    Por cierto, si no es ASCII en un editor de disco no se verán los textos, ¿como sabes que lo que estas cambiando es un texto o no?
    No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.


    It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •