Base binaire constituée de
0, 1
Base octale constituée de
0, 1, 2, 3, 4, 5, 6, 7
Base décimale constituée de
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Base hexadécimale constituée de
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
A=10 ; B=11; C=12 ; D=13 ; E=14 ; F=15
Première fonction permettant de renvoyer le caractère équivalent à notre nombre:
function returnChar(n: number) :: text:
if {_n} is smaller or equal to 9:
return "%{_n}%"
stop
set {_text} to "ABCDEF"
set {_s} to 10
loop {_text} split by "":
if {_s} is {_n}:
return "%loop-value%"
stop
add 1 to {_s}
Deuxième fonction permettant de récupérer la valeur de notre nombre dans la base désirée:
function Convert(base: number, nombre: number) :: text:
while {_nombre}/{_base} is not 0:
if {_x} is not set:
set {_x} to "%returnChar({_nombre} - floor({_nombre}/{_base})*{_base})%"
else:
set {_x} to "%returnChar({_nombre} - floor({_nombre}/{_base})*{_base})%%{_x}%"
set {_nombre} to floor({_nombre}/{_base})
return {_x}
Commande pour tester:
command /nb <number> <number>:
trigger:
if arg 1 is 2 or 8 or 10 or 16:
send "%Convert(arg 1, arg 2)%" to sender
else:
send "Base inexistante." to sender