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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Variable Char a BYTE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Variable Char a BYTE  (Leído 6,788 veces)
bwsr

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Variable Char a BYTE
« en: 20 Febrero 2013, 20:46 pm »

Buenas tengo una variable CHAR char *data con unos valores hexadecimales guardados en ella y quiero pasarle esos datos a una variable del tipo BYTE BYTE *data como si fuese valores en Hex "\x" pero no se como:

El problema es que los valoresHex varian durante la ejecucion del programa, sino podría declarar la variable con \x por delante de cada byte asi

char *valoresHex = "\xAA\xBB\xCC";

------
El problema es que los valores me llegan a valoresHex asi y quiero pasarselos como antes.

char *valoresHex = "AABBCC";

BYTE *valoresByte;


Un saludo y gracias.  :)



En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Variable Char a BYTE
« Respuesta #1 en: 20 Febrero 2013, 21:38 pm »

El tamaño de char suele ser un byte, asi que no hace falta conversion. Si lo que quieres hacer es otra cosa, aclaralo mejor porque no me he enterado de nada.


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
bwsr

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Variable Char a BYTE
« Respuesta #2 en: 20 Febrero 2013, 22:28 pm »

Igual no me estoy explicando bien.......Tengo una función a la que hay que pasarle una variable de tipo BYTE en la que se le pasan valores en Hexadecimal.

funcion(BYTE *data)

Yo hago una serie de operaciones antes de utilizarla y como resultante de estas operaciones consigo una cadena con los valores que quiero pasarle pero guardados en un char así "AABBCC...."

Mi problema es que para que la función me admita esos valores necesito ponerles el "\x" delante a cada byte pero no se como.

es decir:

funcion("AABBCC")  --> NO FUNCIONA

funcion("\xAA\xBB\xCC")  --> SI FUNCIONA


Espero haberme explicado mejor...... Saludos y gracias denuevo.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Variable Char a BYTE
« Respuesta #3 en: 20 Febrero 2013, 22:35 pm »

Las variables Byte no existen en C++, a ver si te estas confundiendo de lenguaje...

Por otro lado, lo que puedes hacer es transformar el valor hexadecimal en decimal y pasar dicho valor decimal a la función.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Variable Char a BYTE
« Respuesta #4 en: 21 Febrero 2013, 00:15 am »

hola, el hecho es que una cadena de bytes se pasa de esa forma, es decir así:

Código:
BYTE* asd = (BYTE*)"\x68\xFF\xFF\xFF\xFF\x68\xFF\xFF\xFF\xFF\x68";


si vos la pasás así:

"68FFFFFFFF68FFFFFFFF68"

entonces tu función de alguna forma tendría que saber que "68" (string) es el byte 68,
a lo que me refiero es que la función debería poder interpretar que se trata de bytes. porque de otra forma no serían bytes sino chares comunes..






« Última modificación: 21 Febrero 2013, 00:23 am por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Variable Char a BYTE
« Respuesta #5 en: 21 Febrero 2013, 00:22 am »

obviamente dejando en claro que un byte = char, pero para representar un byte se requieren 2 chares osea "68", vemos que son dos chares + el cero son 3 chares, por lo cual no existe una forma directa de relacionar ambos datos. por eso de dije que tu función debería interpretar ya sea mediante una tabla o como fuere, los bytes de entrada.

atte

En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
bwsr

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Variable Char a BYTE
« Respuesta #6 en: 21 Febrero 2013, 10:03 am »

Eso es lo que me pasa, que no se como pasar esos char como si fuese una cadena de bytes.
La cadena que quiero pasar no es siempre la misma , ya que es resultante de una serie de operaciones, por lo que no puedo asignar los valores a mano usando los "\x" .
Si alguien me puede hechar un cable con la conversion se lo agradecería mucho.
Un saludo y gracias denuevo.
 :)
En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Variable Char a BYTE
« Respuesta #7 en: 21 Febrero 2013, 11:57 am »

¿Y por que no usas una variable int con el 0X delante como argumento para esa funcion en lugar de pasarlo como cadena?

funcion(int hex);
int hex = 0Xff;

En línea

bwsr

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Variable Char a BYTE
« Respuesta #8 en: 21 Febrero 2013, 15:57 pm »

Ya lo he solucionado usando sscanf   ;)


Código:
sscanf (cadena,"%x",strHex);

Gracias a todos.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Variable Char a BYTE
« Respuesta #9 en: 21 Febrero 2013, 17:26 pm »

Ya lo he solucionado usando sscanf   ;)

Código:
sscanf (cadena,"%x",strHex);
Esa llamada a funcion no hara lo esperado, el problema es el siguiente: sscanf consumira todos los caracteres de la cadena y en base a ellos almacenara un solo numero en la dirección indicada por "strHex".

Para realizar la operación que mencionas se debe utilizar un bucle y en la llamada a función especificar la anchura de campo, esto es, el máximo de caracteres a procesar con (en tu caso) "%Nx". El ultimo paso en el cuerpo del bucle (y ello depende de tu programa) es almacenar el numero obtenido en el array de bytes.

Un programa de ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   char *p = "0011223344556677AABBCCDD";
  7.   unsigned num;
  8.   int nc;
  9.  
  10.   while (sscanf(p, "%2x%n", &num, &nc) == 1){
  11.      printf("%.*s ==> %3u == %2X\n", nc, p, num, num);
  12.      p += nc;
  13.   }
  14.  
  15.   return EXIT_SUCCESS;
  16. }

Y su salida es:
Código:
00 ==>   0 ==  0
11 ==>  17 == 11
22 ==>  34 == 22
33 ==>  51 == 33
44 ==>  68 == 44
55 ==>  85 == 55
66 ==> 102 == 66
77 ==> 119 == 77
AA ==> 170 == AA
BB ==> 187 == BB
CC ==> 204 == CC
DD ==> 221 == DD

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Variable mayor a char?
Programación C/C++
Talard 6 3,802 Último mensaje 19 Febrero 2012, 18:02 pm
por rir3760
[Ayuda] variable dentro de char (solucionado) « 1 2 »
Programación C/C++
sabeeee 11 6,890 Último mensaje 24 Diciembre 2014, 21:20 pm
por sabeeee
ayuda paso de byte* a char* « 1 2 3 »
Programación C/C++
Kaxperday 21 8,353 Último mensaje 27 Junio 2015, 03:22 am
por Kaxperday
Suma byte a byte con acarreo en variable de 2 bytes
Programación C/C++
AlbertoBSD 2 4,387 Último mensaje 18 Mayo 2016, 18:21 pm
por AlbertoBSD
Error en este código: no se puede convertir de 'byte[]' a 'char[]'
.NET (C#, VB.NET, ASP)
Meta 5 6,022 Último mensaje 29 Diciembre 2023, 18:20 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines