0xFFFFFF00 = Hexadecimal -1203495 = Entero
new variable = 0xFFFFFF00; new variable = -1203495;
|
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
|
// [ 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;
}