
Szesnastkowy system liczbowy (czasem nazywany heksadecymalnym, skrót hex) – pozycyjny system liczbowy, w którym podstawą jest liczba 16. Skrót hex pochodzi od angielskiej nazwy hexadecimal. Do zapisu liczb w tym systemie potrzebne jest szesnaście cyfr.
System ten znalazł zastososowanie również w pawnie, jak kompilator wykrywa że jest to system hex? Otóż po tym ze liczba się zaczyna od 0x (można sobie wmówić że x to 16 a po x jest operator mnożenia)
Jak zamienić liczbe w systemie hex na system decymalny (dziesiętny) ?
Bardzo łatwo, naprzykład :
0x14 = 16 * 1 + 4 = 20
0x10 = 16 * 1 + 0 = 16
0x25 = 16 * 2 + 5 = 37
Aby kod wyglądał ciekawiej można zastosować ten system naprzykład w
set_pev(ent, pev_effects, 0x10); // numer efektu = 16
Litery (char / znak) zamiast liczb?
Zamiast liczb możemy również użyć znaków które będą im odpowiadać
Są one w następującej kolejności (wielkość liter jest dowolna)
a = 10 b = 11 c = 12 d = 13 e = 14 f = 15
0xA = 0x10 = 16 * 0 + 10 = 10
0xC = 0x12 = 16 * 1 + 2 = 18
0xFF = 0x1515 = 16 * 15 + 15 = 255
0xAF = 0x1015 = 16 * 10 + 15 = 175
Zastosowanie przykładowe w sma
#include <amxmodx>
#define VERSION "0.1"
new const g_iHEX[] = {
0x14, //20
0x25, //37
0x15, //21
0x05, //5
0x50, //80
0xA, //10
0xFF //255
};
public plugin_init() {
register_plugin("HEX TO DEC", VERSION, "diablix")
register_clcmd("say /test", "cmdHexToDec");
}
public cmdHexToDec(id){
new szMessage[128];
new iMesSize = formatex(szMessage, sizeof szMessage - 1, "Hex : ");
for(new i = 0 ; i < sizeof g_iHEX ; i ++)
iMesSize += formatex(szMessage[iMesSize], (sizeof szMessage - 1) - iMesSize, "%d ", g_iHEX[i]);
set_pev(id, pev_effects, g_iHEX[5]); // 16
client_print(id, 3, szMessage);
return 1;
}