Hola he creado un servidor con sockets para recibir unos datos, el problema es que solo se como rebir la cadena en ascii, necesito la cadena en hexadecimal, he buscado algun ejemplo y solo encuentro en cadena de texto.
Gracias
| |||
Capturar datos en hexadecimal del socket Hola he creado un servidor con sockets para recibir unos datos, el problema es que solo se como rebir la cadena en ascii, necesito la cadena en hexadecimal, he buscado algun ejemplo y solo encuentro en cadena de texto. Gracias |
| |||
Respuesta: Capturar datos en hexadecimal del socket El problema que tengo es que el cliente me envia los datos de esta forma: 1A1A 1A1A1A 1A 1A entonces al recibirlo, y leerlo con el readline automaticamente me lo combierte a ascii, lo que quiero es recibir la cadena en hexadecimal para luego yo dividirla y convertirla. No encuentro la forma de hacerlo. Creo que se podria hacer leyendo byte a byte y guardarlo en una cadena. ¿Es esto posible? Gracias |
| |||
Respuesta: Capturar datos en hexadecimal del socket Prueba esto:
Código Java:
Ver original Si estas utilizando BufferedReader podrias utilizar la funcion read(char[] cbuf, int off, int len) para leer 2 caracteres de la entrada y guardarlos en un String. La funcion read seguramente esta disponible en otras clases Última edición por posman; 22/11/2010 a las 12:19 |
| |||
Respuesta: Capturar datos en hexadecimal del socket Ni el cliente ni el servidor reciben o envian "cadenas en hexadecimal", siempre se envían y se reciben bytes (bits, si me apuras). Otra cosa es a alto nivel como se interpreten esos datos. Y leer datos binarios con Reader es un error, ya que este tipo de objetos está preparado para leer cadenas y tener en cuenta las diferencias de formato en las que se representan las cadenas en distintas plataformas, así que puede transformarlo. Y usar readLine, por ejemplo, puede devolvernos el mensaje entero en una cadena, puesto que en un fichero binario puede no aparecer nunca el caracter que represente un final de linea. En fin, que para leer byte a byte, lo suyo es utilizar InputStream y derivados, casi siempre encapsulados por BufferedInputStream por rendimiento. Luego esos bytes los transformas en lo que quieras. Por ejemplo para pasar un array de bytes a valores hexadecimal, puedes usar cualquiera de las variantes propuestas en este post: http://stackoverflow.com/questions/3...ile-keeping-le Hay para escoger . S!
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |
Etiquetas: |