Traduire un nombre entier en chiffres binaires présentés par groupes de 4 bits

 

//Comment extraire la valeur binaire d'un nombre [0 ou 1] et l'afficher par groupe de 4
integer iChan = 66; //canal pour passer le nombre entier en entrée

string gkInteger2Binary(integer iVal)
{
integer iGroup = 4; //c'est le nombre de chiffres binaires par groupe
integer iLong = 32; //c'est le type d'entier 64, 32 ou 16 bits
integer x; integer y; //itérateurs
string sMess; //pour y ranger les 0 et 1
y = 0;
for(x = 0; x < 32; ++x)
{
//Le & permet d'extraire le chiffre binaire situé à une position calculée
//en élevant 2 à la puissance donnant la position du chiffre binaire en
//partant de la droite (à partir de 0)
//sMess contiendra la structure binaire de iVal, mais comme les chiffres binaires
//sont détectés de la droite vers la gauche, cela explique la curieuse concaténation ;
//ainsi le 0 ou le 1 sera ajouté à gauche de ce que contient déjà sMess
if(iVal & (integer)(llPow((float)2.0, x)))
{
sMess = "1" + sMess;
}
else
{
sMess = "0" + sMess;
}
y = y + 1;
if(y >= 4)
{
sMess = " " + sMess;
y = 0;
}
}
return sMess;
}
default
{
state_entry()
{
llSay(0, "Entrer un nombre entier (signé ou non) : /" + (string)iChan + " nnnnnnnnnnn");
llListen(iChan, "", NULL_KEY, "");
}

listen(integer iChanel, string sName, key kId, string sMessage)
{
llSay(0, sMessage + " ===> " + gkInteger2Binary((integer)sMessage));
}
}

 


Placer ce script dans un cube et passer dans le chat pour dialoguer