Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AXA en 10 Enero 2023, 08:51 am



Título: Convercion de numeros a char
Publicado por: AXA en 10 Enero 2023, 08:51 am
como convierto long o int a *char? y viceversa char a long o int.?


Título: Re: Convercion de numeros a char
Publicado por: 4v1dy4 en 12 Enero 2023, 16:16 pm
¿Que es *char? Querras decir char*.

No es lo mismo medio metro de encaje negro a que un negro te en... bueno.

Para "convertir" un tipo de dato (int, char, long int, etc) a otro, utilizas el concepto de casting:

Citar
El casting o simplemente cast nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles.
https://programacionnerd.blogspot.com/2012/05/c-conversiones-de-tipo-casting-en-c.html (https://programacionnerd.blogspot.com/2012/05/c-conversiones-de-tipo-casting-en-c.html)

Puse convertir entre comillas porque convertir, lo que se dice convertir, no puedes. Son tipos de datos diferentes. Lo que si puedes hacer (y de eso se trata el casting), es decirle al compilador (decirle "al lenguaje") que trate un objeto (algo) de un tipo de dato determinado, como si fuera otro tipo de dato.

Para convertir un objeto de tipo B en un objeto del tipo A:

Código
  1. objeto_de_tipo_A = (tipo_de_dato_del_objeto_A) objeto_de_tipo_B;

Un ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int var_int;
  6. char var_char;
  7.  
  8. var_int=123;
  9.  
  10. var_char=(char)var_int;
  11.  
  12. printf("%d \n", (int) var_char);
  13.  
  14. return 0;
  15. }

Salida:

Citar
123

Citar
Son tipos de datos diferentes. Lo que si puedes hacer (y de eso se trata el casting), es decirle al compilador (decirle "al lenguaje") que trate un objeto (algo) de un tipo de dato determinado, como si fuera otro tipo de dato.

Esto que dije antes es importante. Porque el almacenamiento de un tipo no es el mismo que el de otro. En el caso de hacer casting a un almacenamiento, otro tipo de almacenamiento, obtendras un carry overflow:

Citar
The carry flag is a bit that is set when an arithmetic operation results in a carry out of the most significant bit. In binary multiplication, the carry flag is set when the result of the multiplication is too large to fit in the destination register.
https://allthedifferences.com/carry-flag-vs-overflow-flag/#:~:text=A%20carry%20occurs%20when%20the,overflow%20occurs%20in%20binary%20multiplication. (https://allthedifferences.com/carry-flag-vs-overflow-flag/#:~:text=A%20carry%20occurs%20when%20the,overflow%20occurs%20in%20binary%20multiplication.)

Basicamente ocurre cuando el resultado de cualquier no cabe, equisde

Ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int var_int;
  6. char var_char;
  7.  
  8. var_int=1234;
  9.  
  10. var_char=(char)var_int;
  11.  
  12. printf("%d \n", (int) var_char);
  13.  
  14. return 0;
  15. }

Salida:

Citar
-46

El maximo de almacenamiento para un valor char es 255 (si no tiene signo).

Saludotes.


Título: Re: Convercion de numeros a char
Publicado por: Eternal Idol en 12 Enero 2023, 17:01 pm
https://cplusplus.com/reference/cstdlib/itoa/
https://cplusplus.com/reference/cstdlib/atoi/


Título: Re: Convercion de numeros a char
Publicado por: 4v1dy4 en 13 Enero 2023, 01:17 am
(https://i.ytimg.com/vi/-4a3Qko88dY/sddefault.jpg)


Título: Re: Convercion de numeros a char
Publicado por: Eternal Idol en 13 Enero 2023, 01:20 am
Tal cual, no ver que pide convertir una cadena en entero y viceversa no cuadra.