Anuncios Google

Concatenar variables

Tengo un pequeño problema, me explico. Tenemos los hexadecimales 07 49 9F, que en representación decimal equivale a unos 400.000.

 

El problema es que leo esos tres valores por separado, es decir, tengo una variable que dice "7" otra que dice "71" (49 en decimal) y otra que dice "159" (9F en decimal)...  Tengo que concatenarlos para conseguir el numero... He probado varios trucos como usar potencias:

 

for (int j = 0; j < i;j++)  
 
                       if (Numero[j] < 10)
                       Numero_Definitivo += (Numero[j]*(int)pow(10,j));
                       else if (Numero[j] < 100)
                            Numero_Definitivo += (Numero[j]*(int)pow(100,j));
                            else
                                Numero_Definitivo += (Numero[j]*(int)pow(1000,j));
   } 

 

Pero me salen disparates, estoy atrapado y no sé que hacer...

 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Almamu

Usa bitshift, por

Usa bitshift, por ejemplo:

for(int j = 0; j < i; j ++)
{
	Numero_Definitivo |= Numero[j] << (8 * j);
}

No lo he comprobado, pero en teoría debería funcionar, eso sí, ten cuidado, Numero_Definitivo tiene que ser de 32 bits, y el número no puede pasar de 4 conjuntos de dos números hexadecimales. Además debes tener en cuenta que Numero[0] = 0x9F, Numero[1] = 0x49 y Numero[2] = 0x07; si no este código no funcionará.

Tambien puedes hacer una conversión directa con punteros, siempre teniendo en cuenta los tamaños, 4 bytes = un int de 32 bits, o podrías causar un overflow.


Al final:  int aux = 1;

Al final:

 

 

int aux = 1;
          int rest = 0;
 
 for(int k = i-1; k >= 0; k--){
                               rest += Numero[k]*aux;
                               aux =aux*256;
}

 

La ventaja frente a tu método, es que es un método generico. Que me sirve para cualquier cantidad de bytes... Pero gracias : P

 

Imagen de Almamu

Ehm, no se si te has dado

Ehm, no se si te has dado cuenta, pero estás haciendo lo mismo, y no te va a servir para cualquier número de bytes, porque de la misma forma harás overflow, aparte de ser más lento y completamente estúpido.


Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.