• Viernes 19 de Abril de 2024, 16:40

Autor Tema:  Conversiones  (Leído 5993 veces)

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Conversiones
« en: Jueves 31 de Marzo de 2005, 02:53 »
0
:comp:
Hola soy estudiante de informatica y estoy haciendo dos programas....uno que me convierta de hexadecimal a decimal y el otro de binario a decimal.....estoy como enrredado en como hacer el proceso para convertirlo,aunque me han dicho que para hacer estos programas existe una funcion especial...la verdad que no se y espero que alquien pueda ayudarme..no siendo mas me despido y agradezco la ayuda que me puedan dar....

 :suerte:

 :gracias:
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Conversiones
« Respuesta #1 en: Jueves 31 de Marzo de 2005, 04:38 »
0
printf
atoi
itoa
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Conversiones
« Respuesta #2 en: Viernes 1 de Abril de 2005, 00:25 »
0
itoa no es estandar, te tocará implementarla si trabajas con linux, por ejemplo.

No conozco una función específica, pero la implementación de esas funciones no tiene ningún misterio. ¡Animo! y si tienes algun problema no dudes en preguntar.

Nos vemos :hola:
Core Dumped
zirrus.es

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Conversiones
« Respuesta #3 en: Viernes 1 de Abril de 2005, 01:03 »
0
Cita de: "CiRRuS"
itoa no es estandar, te tocará implementarla si trabajas con linux, por ejemplo.

No conozco una función específica, pero la implementación de esas funciones no tiene ningún misterio. ¡Animo! y si tienes algun problema no dudes en preguntar.

Nos vemos :hola:
pero recuerdo haberlas usado bajo inux red hat 9  :blink:
o no?  :o
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Re: Conversiones
« Respuesta #4 en: Viernes 1 de Abril de 2005, 01:22 »
0
:comp:

 :ayuda:

pero entonces para convertir de hexa a decimal tengo que darle un valor de constante a los valores de 10-11-12-13-14-15 que son A-B-C-D-E-F??? o como hago la operacion para que me muestre el numero en decimal........al igual que el de binario,ya lo hice para que me convierta de decimal a binario pero lo contrario no fui capaz,tengo que aplicar algun ciclo que me evalue el numero binario que digito????...sigo intentando y si me pueden colaborar lo agradeceria...

 :gracias:

 :suerte:
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Conversiones
« Respuesta #5 en: Viernes 1 de Abril de 2005, 06:18 »
0
Si mal no recuerdo en la seccion Fuentes de la Web de Solocodigo :P un programador y usuario de esta comunidad dejo a disposicion los fuentes de sus programitas de conversiones :comp: . Talves te pueda servir :lightsabre: . Saludos :whistling:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Conversiones
« Respuesta #6 en: Viernes 1 de Abril de 2005, 10:44 »
0
Hola a todos,
pues la verdad es que pasar de hexadecimal a decimal es mucho más fácil de lo que parece....  Tú único problema es el binario, recuerda que cualquier dato se guarda en tu PC en binario, por tanto lo único que necesitas es poder recoger y sacar los nºs en decimal, hexadecimal y binario.
Muy bien, para poder recoger un nº en hexadecimal y convertirlo a decimal lo único que tienes que hacer es lo sigte:
Código: Text
  1.  
  2. int a;
  3. printf(&#34;&#092;nIntroduce un numero en hexadecimal: &#34;);
  4. scanf(&#34;%x&#34;,&a);//lo recoges en hexadecimal
  5. printf(&#34;&#092;nEl numero %x en decimal es: %d&#34;,a,a);
  6.  
  7.  
Pues ya ves que no tiene ningún misterio, ahora para pasar de decimal a hexadecimal, es igual pero al revés:
Código: Text
  1.  
  2. int a;
  3. printf(&#34;&#092;nIntroduce un numero en decimal: &#34;);
  4. scanf(&#34;%d&#34;,&a);
  5. printf(&#34;&#092;nEl numero %d en hexadecimal es: %x&#34;,a,a);
  6.  
  7.  
Si lo que quieres es printear los numeros hexadecimales en mayúsculas: A en vez de a.  Lo que tienes que hacer es cambiar el %x por %X.

Y ya está, tan fácil como eso.

El binario es más complicado, pues no hay ningún %b que printee y escanee en binario.... Al menos eso creo.  Por tanto deberías hacer la operación paso a paso por tus medios.  Los operadores shift (>>,<<) que te permiten correr bits de una vble y los operadores AND (&) y OR (|) que te permiten hacer operaciones lógicas a nivel de bit dentro de una vble te serán de gran ayuda sin duda.  El resto te lo dejo a ti.
Un saludo.
No hay tonto más molesto que el ingenioso.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Conversiones
« Respuesta #7 en: Viernes 1 de Abril de 2005, 11:06 »
0
Tambien puede usar una estructura con una variable char y una UNION de ese char a ocho variables que corresponderian a cada bit, como sabemos la union utiliza la memoria de la variable mas grande(char=1byte) para almacenar otras variables.. si reservamos para un char en la union podriamos recorrerle cada bit, me parecio ver algo en internet cuando buscaba acerca de uniones.. asi obtendria el valor de cada bit del caracter que necesite. Saludos
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

sés

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Conversiones
« Respuesta #8 en: Viernes 1 de Abril de 2005, 12:01 »
0
Código: Text
  1. #ifdef CODIF_FAST
  2.     static char _cHex[16] = {
  3.         '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  4.         'A', 'B', 'C', 'D', 'E', 'F'
  5.     };
  6.     #define HexToAsc( d ) _cHex[d]   // Hexadecimal To Ascii
  7.  
  8.     static BYTE _dHex[23] = {
  9.         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, // '0'-'9'  (48-57)
  10.         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,                   // KKKKKKK  (58-64)
  11.         0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f                          // 'A'-'F'  (65-70)
  12.     };
  13.     #define AscToHex( c ) ((int)_dHex[(c)-'0'])  // Ascii To Hexadecimal
  14. #else
  15.     #define HexToAsc( d ) ((char)(((d)&#60;10) ? ('0'+(d)) : ('A'+(d)-10)))
  16.     #define AscToHex( c ) ((int)(((c)&#60;'A') ? ((c)-'0') : ((c)-'A'+10)))
  17. #endif  // FAST
  18.  

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Conversiones
« Respuesta #9 en: Viernes 1 de Abril de 2005, 16:24 »
0
Hacer un Binario a Decimal es bastante sencillo....... :)

Simplemente que hacer lo mismo que harías en una hoja de papel....Por ejemplo....

Citar
101001 --> 41.

En un papel lo harías así.....

Código: Text
  1.  
  2. 1x2(5) + 0x2(4) + 1x2(3) + 0x2(2) + 0x2(1) + 1x2(0)
  3.  
  4.  

Los números que están entre (), es el número al que tienes que elevar el 2.

Simplemente, cuenta cuantos dígitos tiene la cadena binaria. Multiplicas cada digito por 2 elevado a la potencia que le corresponde....los sumas....y problema solucionado  :lol:

Es incluso más sencillo que el Decimal a Binario  :comp:

Saludos,

Blag  :devil:

rir3760

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Conversiones
« Respuesta #10 en: Viernes 1 de Abril de 2005, 17:54 »
0
Si tu asignatura te permite utilizar funciones de la biblioteca estandard entonces puedes convertir la representacion en cadena de un numero en base 2 (binario) a base 10  (decimal) con las funciones strtol y strtoul.

Si no puedes utilizar esas funciones entonces el proceso de crear tu propia funcion es relativamente sencillo, el pseudo-codigo es:

1. Inicializa las variables base_10 y contador a cero.
2. Lee el caracter cadena[contador].
3. Salir si el caracter es '\0' (fin de cadena).
4. Caso contrario multiplicar base_10 por N (N es la base, 2=binario, 8=octal, etc.) y sumarle el digito en la posicion cadena[contador], almacenar el resultado en la variable base_10. En otras palabras:

Código: Text
  1. if (isdigit(cadena[contador]))
  2.    digito = cadena[contador] - '0';
  3. else
  4.    digito = 10 + tolower(cadena[contador]) - 'a';
  5.  
  6. base_10 = base_10 * N + digito;
  7.  

5. Incrementar la variable contador y regresar al paso 2.

Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Re: Conversiones
« Respuesta #11 en: Sábado 2 de Abril de 2005, 04:52 »
0
:comp:
 :bravo:

Hola.......gracias a todos por su ayuda...ya lo hice de manera exitosa,lo que estuvo un poco complicado fue la conversion de decimal a binario,de resto de decimal a hexadecimal y de decimal a octal es supersencillo...no siendo mas me despido y si necesitan este programa me envian un e_mail a mi correo....si les puedo colaborar en algo me dicen......

 :gracias:

 :suerte:
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Conversiones
« Respuesta #12 en: Domingo 3 de Abril de 2005, 07:09 »
0
Grandioso NEO, siguele pa delante nomas! :D .. Suerte y Existos!
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Conversiones
« Respuesta #13 en: Lunes 4 de Abril de 2005, 02:56 »
0
Excelente <Neo>  :bravo:

Porque no posteas tu código para ayudar a los demás miembros del foro, que puedan tener un problema similar  B)  Además......me da curiosidad de ver como resolviste el problema....Porque recuerda que en programación...
Citar
Existen miles de respuestas para un mismo problema
 :comp:

Saludos,

Blag  :devil:

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Re: Conversiones
« Respuesta #14 en: Miércoles 4 de Mayo de 2005, 01:54 »
0
:comp:

Hola voy a dejar el archivo adjunto del informe del proyecto...espero les sirva y si tienen alguna duda me escriben al correo o por medio del messenger...

P.D: El archivo lo tuve que dividir en tres por el tamaño...


 :good:

 :suerte:

 :lightsabre:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Re: Conversiones
« Respuesta #15 en: Miércoles 4 de Mayo de 2005, 01:55 »
0
:comp:


....aqui va el segundo archivo...

 :devil:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>

ecolve

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: co
    • Ver Perfil
    • http://twitter.com/ecolve
Re: Conversiones
« Respuesta #16 en: Miércoles 4 de Mayo de 2005, 01:57 »
0
:comp:

.....y el tercer archivo....espero le sirva a "alguien"...chao


 :ph34r:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
"...everything that has a beginning, has an end..."

http://twitter.com/ecolve
Edwin C. <ecolve>

<<== 11101 ==>>