Il est strange ton script : à quoi servent iCount et iNumber (surtout que tels qu'ils sont créés, iCount vaut toujours 1, à moins que la nPosition soit supérieure à 32, et dans ce cas c'est l'utilisateur qui est strange... )
(A moins que tu ne veuille effectivement permettre des nPositions supérieures à 32, mais dans ce cas, ne serait-il pas plus sûr de mettre nPosition = nPosition % 32, je ne sais pas si le NWScript apprécie les décalages négatifs, à moins que tu ais testé et qu'il se comporte comme prévu ?? )
De plus j'ai un peu peur pour le bValue == FALSE (le TRUE, pas de problème) : ta fonction va effacer tout les bits de valeur inférieure....
Je proposerais plutôt : 0xFFFFFFFF - pow(2, nPosition - 1), toujours avec un &.
Mais du coup, dans un souci de compatibilité, je remplacerais la technique du bValue == TRUE par 1 << nPosition - 1 (% 32 si tu veux plus de positions possibles) toujours avec un |. Puisque ma méthode compte les bits à partir de la droite tandis que la tienne les comptait à partir de la gauche (big endian, little endian... ).
Pour le support de l'écriture directe en binaire, j'ai un doute, même s'il serait très facile de faire une fonction de conversion de chaîne vers nombre pour ça.
Par contre, le support de l'hexa, j'en suis presque sûr, il me semble que Bioware l'as même utilisé dans l'une de ses librairies.
|