SA-MP Forums Archive
Comprar variables por funciуn - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Comprar variables por funciуn (/showthread.php?tid=577347)



Comprar variables por funciуn - Jastak - 10.06.2015

Necesito saber el mйtodo de comprar una variable de tipo entero si es Hexadecimal o Entero puro, por ejemplo una funciуn que retorne 1 si es Hexadecimal y 0 si es Entero, pero.. necesito comprarlo desde una variable (no tipo string) de tipo entero.

Un Ejemplo:
Код:
0xFFFFFF00 = Hexadecimal
-1203495 = Entero
Pero que esto estй en un valor tipo entero.
Код:
new variable = 0xFFFFFF00;
new variable = -1203495;
їCual serнa el mйtodo?


Re: Comprar variables por funciуn - SickAttack - 10.06.2015

No creo que haya una forma viable, ya que son iguales al final.


Re: Comprar variables por funciуn - spell - 10.06.2015

Creo que estas un poco confundido sobre que es hexadecimal y entero. En tiempo de ejecuciуn no hay diferencias entre una y otra, ya que son diferentes nombres de representar un determinado valor que es con lo que trabaja una computadora. La ъnica for a es pasarlo a cadena, pero en tiempo de ejecuciуn no se puede usando el valor, puesto que uno es en base 10 y el otro en base 16, pero lo ъnico que sabe la maquina es que vale x


Re: Comprar variables por funciуn - Jastak - 10.06.2015

Quote:
Originally Posted by spell
Посмотреть сообщение
Creo que estas un poco confundido sobre que es hexadecimal y entero. En tiempo de ejecuciуn no hay diferencias entre una y otra, ya que son diferentes nombres de representar un determinado valor que es con lo que trabaja una computadora. La ъnica for a es pasarlo a cadena, pero en tiempo de ejecuciуn no se puede usando el valor, puesto que uno es en base 10 y el otro en base 16, pero lo ъnico que sabe la maquina es que vale x
ya ya, yo se que es un hexadecimal, pero lo que quiero hacer exactamente es convertir un color hexadecimal a decimal (dirбs es lo mismo si no que usa base 16) es decir, que si el nъmero estб en base 16 lo convierta a base 10 (normal) y si estб en base 10 no haga nada, es la razуn por la que necesito la verificaciуn o que me diga alguna otra tйcnica de hacer eso.


Re: Comprar variables por funciуn - SickAttack - 10.06.2015

pawn Код:
// [ DEVELOPMENT GAMEMODE ]

// INCLUDES:

#include <a_samp>
#include <sscanf2>

// DEFINES:

// GENERAL:

#define HEX_VALUE "0xFFFFFFFF"
#define INTEGER_VALUE -1

// FUNCTIONS:

#define strcpy(%0,%1,%2) strcat((%0[0] = '\0', %0), %1, %2)

// MAIN:

main()
{
    print("Development Mode: color_hex_int.amx");

    printf("%s to integer: %i", HEX_VALUE, HexToInt(HEX_VALUE));
    printf("%d to hexadecimal: %s", INTEGER_VALUE, IntToHex(INTEGER_VALUE));

    new string[11], answer[12];
    strcpy(string, HEX_VALUE, 11);
    answer = (IsHexOrInt(string)) ? ("Hexadecimal") : ("Integer");
    printf("Is %s an integer or a hexadecimal value? %s.", string, answer);

    format(string, sizeof(string), "%d", INTEGER_VALUE);
    answer = (IsHexOrInt(string)) ? ("Hexadecimal") : ("Integer");
    printf("Is %s an integer or a hexadecimal value? %s.", string, answer);
}

// CALLBACKS:

public OnGameModeInit()
{
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

// FUNCTIONS:

stock HexToInt(hex[])
{
    new int;
    sscanf(hex, "x", int);
    return int;
}

stock IntToHex(int)
{
    new string[11];
    format(string, sizeof(string), "0x%06xFF", int >>> 8);
    return string;
}

stock IsNumeric(const string[]) return !sscanf(string, "{d}");

stock IsHexOrInt(hex[])
{
    if(IsNumeric(hex)) return false;
    return true;
}