Forum TourDeJeu · Règles du forum | Aide Recherche Membres |
Bienvenue invité ( Connexion | Inscription ) | Recevoir à nouveau l'email de validation |
zumba |
Ecrit le : Vendredi 30 Mars 2007 à 13h56
|
||
Ouf Groupe : Membre Messages : 496 |
Hello, Comment pour créer un fichier php contenant 1000 fois (par exemple) le mot hexa 0x0000000000 (5 octets à valeur 0) sachant qu ele mot hexa pourrait être aussi autre chose genre 0x000054B02C... mais qu'à la fin mon fichier devra toujours faire 5000 octets qq soit le motif. je mets mon code actuel qui marche pas (n'écrit qu'un octet sur 5 pour 00000, en gros il zappe tous les bits à 0 jusqu'à en rencontrer un à 1)
Merci, zumba -------------------- Z
|
||
Haiken |
Ecrit le : Vendredi 30 Mars 2007 à 18h22
|
||
Ouf Groupe : Membre Messages : 360 |
A priori ça doit donner un truc comme ça (non testé)
-------------------- Association Nainwak, aide & hébergement des jeux web
Le Blog de l'assoc', encore mieux que l'assoc' tomate ! |
||
zumba |
Ecrit le : Vendredi 30 Mars 2007 à 18h45
|
Ouf Groupe : Membre Messages : 496 |
yop, gracié mais no esta fonctionnade... il m'écrit des mots de 3 octets, je pige pas trop pk.
-------------------- Z
|
naholyr |
Ecrit le : Samedi 31 Mars 2007 à 11h23
|
||||
Ouf Groupe : Membre Messages : 423 |
Normal, tu veux écrire une chaine utilise une chaine Pour PHP le nombre 00000 est simplement... 0. Pourquoi écrirait-il autre chose ? Il faut donc que tu utilises des chaines de 5 caractères et pas un code hexa, sinon tu n'y arriveras jamais : à chaque fois que les N premiers octets seront des "0" il les ignorera. Si vraiment tu n'as pas le choix et que ton paramètre doit absolument être un code hexa (je ne vois pas trop dans quel cas on aurait cette contrainte), le plus simple est de le convertir en chaîne avant. Mettons que tu aies 0x00007a756d, on va le transformer en chaine octet par octet via chr, et combler avec str_pad :
Affichera bien "00zum" Il suffit donc de convertir au début de ta fonction
|
||||
zumba |
Ecrit le : Lundi 02 Avril 2007 à 17h16
|
Ouf Groupe : Membre Messages : 496 |
Salut Naholyr,
merci t'es décidément balèze en algo/code (tu m'avais déjà sorti un algo de création de poules sportives). Mais là y reste un souci, et je pige vraiment pas ce qui se passe, je me demande si il y a pas une subtilité genre automatisme système là dessous : en gros si j'appelle createDefaultFog avec $fill=0x0008AF0892 il me le remplit avec des mots hexa "30 08 AF 08 92" donc substitue le premier 0 par un 3. EN fait il traduit la chaine hexa "00" en valeur hexa "30". Pourtant rien n'explique cela dans le code. Une idée ? Merci ! z (ps : fais moi penser à te soumettre un autre algo bien bien velu un de ces 4) -------------------- Z
|
Haiken |
Ecrit le : Lundi 02 Avril 2007 à 21h18
|
||
Ouf Groupe : Membre Messages : 360 |
pas étonnant, tu travailles sur des nombre à 5 octets donc 40 bits
(source)
Même si d'après la doc il devrait convertir ce nombre en flottant. Enfin m'étonne qu'à moitié, le support des gros nombres est un peu bancal en php. Si tu veux éviter les problèmes, utilise une lib comme GMP ou BCMath, ou alors stockes tes nombres dans une chaîne -------------------- Association Nainwak, aide & hébergement des jeux web
Le Blog de l'assoc', encore mieux que l'assoc' tomate ! |
||
naholyr |
Ecrit le : Lundi 02 Avril 2007 à 21h27
|
Ouf Groupe : Membre Messages : 423 |
Tout simplement parce que je suis un imbécile
Ce n'est pas avec des 0 qu'il faut remplir ! C'est avec des caractères de code ascii 0 évidemment Je me suis rendu compte de ça grâce à "echo chr(0x30)" Donc dans l'appel à str_pad() il faut remplir avec des chr(0) et pas des '0' |