elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como implementar esta conversion?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como implementar esta conversion?  (Leído 2,778 veces)
SheKeL_C$


Desconectado Desconectado

Mensajes: 549


_-=[Sh3K3L_C$]=-_


Ver Perfil
Como implementar esta conversion?
« en: 30 Marzo 2016, 03:40 am »

No se como hacer este tipo de conversion.

Tengo una cadena que contiene caracteres en el sistema hexadecimal, me gustaria comprobar si esa cadena se corresponde a un array de bytes.

Código
  1. char *x = "00AC"
  2. char *y = "0CC0"
  3. byte z[] = {0x00, 0xAC};

En este ejemplo 'x' y 'z' serian iguales o equivalentes, miestras que 'y' no se corresponde con 'z'


« Última modificación: 30 Marzo 2016, 03:44 am por SheKeL_C$ » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Como implementar esta conversion?
« Respuesta #1 en: 30 Marzo 2016, 04:01 am »

Hola exactamente que quieres hacer?

Quieres comparar si la cadena x o y corresponde a algun valor del arreglo z
ademas como definiste ese tipo byte segun yo tengo entendido el byte no existe en c o c++ y lo mas parecido en tamaño es un char

Hola como mencione arriba no se exactamente que quieres hacer pero intuyendo que quieres comparar las variables, una solucion podria ser:

Código
  1. #include <iostream>
  2. #include<ctype.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.  
  8.    unsigned char x[]={0x00,0xAC};
  9.    unsigned char y[] ={0x0C,0xC0};
  10.    uint8_t z[] = {0x00, 0xAC}; //se puede simular ocmo unsigned char
  11.  
  12.    if(x[0]==z[0] && x[1]==z[1]) cout<<"son iguales"<<endl;
  13.    else cout<<"no son iguales"<<endl;
  14.  
  15.    return 0;
  16. }


De entrada por que el tamaño de las estructuras es diferente ya que el puntero x posee cuatro elementos encontra de el arreglo z  solo posee dos, como muestro en el codigo de arriba un equivalente de codigo a:
Código
  1. char *x = "00AC
es:
Código
  1. char x[]={'0','0','A','C'};
lo cual muestra que jamas podrian ser iguales.


PD: En C/C++ no existe el tipo de dato byte lo mas cercano es unsigned char
o utilizando la bibilioteca ctype.h puede especificar un tipo de dato de 8 bits sin signo que es el equivalente a 1 byte
Salutos..


« Última modificación: 30 Marzo 2016, 04:24 am por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
SheKeL_C$


Desconectado Desconectado

Mensajes: 549


_-=[Sh3K3L_C$]=-_


Ver Perfil
Re: Como implementar esta conversion?
« Respuesta #2 en: 30 Marzo 2016, 04:24 am »

Tengo un archivo que tiene unos bytes, estos bytes son 00 y AC.
Ahora tengo tengo estos punteros char '00AC' y '0CC0'.

Mi nivel de conocimientos de c o c++ son minimos.

Quiero comprobar que los bytes que tengo en memoria 00 y AC corresponden a unos caracteres ASCII que corresponden al los caracteres usados en el sistema hexadecimal?

 
Código
  1.    //                      00AC.txt    30h 30h 41h 43h
  2.    //                        --------      0    0h    A    Ch
En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Como implementar esta conversion?
« Respuesta #3 en: 30 Marzo 2016, 04:41 am »

Supongamos  que tienes tus bytes 00 y AC  en tu archivo y los lees como numeros enteros y no como caracteres y los quieres comparar con tu puntero de char que ya tienes en tu programa en formato hexadecimal

Pues lo mas claro para mi es convierte esos punteros char en un valor entero y luego haces la comparacion:

Como en este ejemplo, la conversion la hago con una funcion llamada strtol que viene incluida en la biblioteca cstdlib referencia:http://www.cplusplus.com/reference/cstdlib/strtol/

Ejemplo:

Código
  1. #include <iostream>
  2. #include<ctype.h>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  
  9.    const char* x="00AC";
  10.    uint8_t valor=(uint8_t)strtol(x,NULL,16);
  11.    uint8_t z =0x00AC;
  12.  
  13.    if(valor==z)cout<<"son iguales"<<endl;
  14.    else cout<<"son diferentes"<<endl;
  15.  
  16.    return 0;
  17. }
  18.  

Si hay dudas comenta
Saludos...
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
SheKeL_C$


Desconectado Desconectado

Mensajes: 549


_-=[Sh3K3L_C$]=-_


Ver Perfil
Re: Como implementar esta conversion?
« Respuesta #4 en: 30 Marzo 2016, 05:04 am »

Supongamos  que tienes tus bytes 00 y AC  en tu archivo y los lees como numeros enteros y no como caracteres y los quieres comparar con tu puntero de char que ya tienes en tu programa en formato hexadecimal

Pues lo mas claro para mi es convierte esos punteros char en un valor entero y luego haces la comparacion:

Como en este ejemplo, la conversion la hago con una funcion llamada strtol que viene incluida en la biblioteca cstdlib referencia:http://www.cplusplus.com/reference/cstdlib/strtol/

Ejemplo:

Código
  1. #include <iostream>
  2. #include<ctype.h>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  
  9.    const char* x="00AC";
  10.    uint8_t valor=(uint8_t)strtol(x,NULL,16);
  11.    uint8_t z =0x00AC;
  12.  
  13.    if(valor==z)cout<<"son iguales"<<endl;
  14.    else cout<<"son diferentes"<<endl;
  15.  
  16.    return 0;
  17. }
  18.  

Si hay dudas comenta
Saludos...

Gracias, ya esta.

La solucion era strtol
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Como implementar esta conversion?
« Respuesta #5 en: 17 Abril 2016, 00:00 am »

Voy a invadir el hilo para no abrir 8000000 millones ya que los estoy chequeando todos  ;D

Código
  1. char x[]={'0','0','A','C'};

Que seria eso ? que diferencia hay entre eso y ... ?

Código
  1. char x[]="00AC"


Es solo más azucar sintactica ?  veo se comportan igual

// Gracias
« Última modificación: 17 Abril 2016, 00:14 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con conversion de número a cadena y trabajo con esta
Programación Visual Basic
_LooSeR_ 0 1,091 Último mensaje 19 Marzo 2008, 03:20 am
por _LooSeR_
¿cómo implementar un progressBar?
Java
kinos 1 7,070 Último mensaje 13 Junio 2010, 11:50 am
por Chuidiang
Alguien Sabe De Esta Conversión/cifrado?
Ingeniería Inversa
Leminy 1 2,661 Último mensaje 21 Septiembre 2011, 10:02 am
por el-brujo
Como puedo implementar Tcptrack
Redes
virtualedu 0 1,841 Último mensaje 10 Junio 2013, 14:58 pm
por virtualedu
No se como implementar un modulo exe en un pdf ,word,outlook
Dudas Generales
lablasa 2 2,025 Último mensaje 5 Junio 2014, 13:36 pm
por .:UND3R:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines