Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Conversión de números ( decimal, binario y hexadecimal )  (Leído 1624 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado NiuWeb

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2826
  • Mensajes: 1.699
  • Agradecido: 141 veces
  • Sexo: Masculino
  • Rock anthem for saving the world.
    • Ver Perfil
Autor: NiuWeb
Versión de GM utilizada:  :GMS: Studio 1.4
Descripción: Conjunto de scripts para poder convertir de un número decimal a un binario y a un hexadecimal, y de un número binario o hexadecimal (a modo de cadena) a un número real.

Código:

Decimal a binario
///dec_to_bin(dec);
var dec, bin;
dec = argument0;
bin = "";
while(dec > 0)
{
    bin = string(dec mod 2) + bin;
    dec = dec div 2;
}
return bin;
Su único argumento es el número decimal a convertir. Devuelve una cadena con el número binario.

Binario a decimal
///bin_to_dec(bin);
var bin, len, dec;
bin = string(argument0);
len = string_length(bin);
dec = 0;

var i;
for(i = len; i >= 1; i--)
{
    dec += power(2, len - i) * real(string_char_at(bin, i));
}
return dec;
Su único argumento es el número binario (a modo de cadena) a convertir. Devuelve un número real.

Decimal a hexadecimal
///dec_to_hex(dec);
var base, dec, bin;
base = "0123456789ABCDEF";
dec  = argument0;
bin  = "";
while(dec > 0)
{
    bin = string_char_at(base, (dec mod 16) + 1) + bin;
    dec = dec div 16;
}
return bin;
Su único argumento es el número decimal a convertir. Devuelve una cadena con el número hexadecimal.

Hexadecimal a decimal
///hex_to_dec(hex);
var base, hex, len, dec;
base = "0123456789ABCDEF";
hex  = string(argument0);
len  = string_length(hex);
dec  = 0;

var i;
for(i = len; i >= 1; i--)
{
    dec += power(16, len - i) * (string_pos(string_char_at(hex, i), base) - 1);
}
return dec;
Su único argumento es el número hexadecimal (a modo de cadena) a convertir. Devuelve un número real.

Espero que le pueda ser de utilidad a alguien :D

EDIT: Scripts optimizados.
« última modificación: Septiembre 09, 2017, 06:29:24 pm por NiuWeb »

El tiempo era tu aliado, humano, pero te ha abandonado.
Los Forerunners han regresado, esta tumba ahora es tuya.

-Ur-Didacta.


BA:STFW&RTFM
 


No Tienes Permisos Para Dar Puntos
point 5 Puntos

Usuarios que puntuaron el tema » Clamud (5 Pts) 


Desconectado VisualGames

Respuesta #1 en: Abril 25, 2016, 07:02:25 pm
Pos creo que me va a servir en unos años jeje ¿en que curso/año escolar te pasaron lo de hexadecimal???


Desconectado NiuWeb

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2826
  • Mensajes: 1.699
  • Agradecido: 141 veces
  • Sexo: Masculino
  • Rock anthem for saving the world.
    • Ver Perfil
Respuesta #2 en: Abril 25, 2016, 09:53:35 pm
Pos creo que me va a servir en unos años jeje ¿en que curso/año escolar te pasaron lo de hexadecimal???
En ninguno (hasta el momento), lo aprendí leyendo en internet.

El tiempo era tu aliado, humano, pero te ha abandonado.
Los Forerunners han regresado, esta tumba ahora es tuya.

-Ur-Didacta.


BA:STFW&RTFM
 


Desconectado VisualGames

Respuesta #3 en: Abril 26, 2016, 12:23:37 am
A ok :v