Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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 1706 veces)

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

Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • 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 »

alaberga regué el café.

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 bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • 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.

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado VisualGames

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