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...
Usa bitshift, por
Usa bitshift, por ejemplo:
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:
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
Mi creacciónes particulares:
http://www.scenebeta.com/noticia/la-serpiente
http://www.scenebeta.com/node/22535
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.