CONVERTISSEUR DE BASE DÉCIMALE, BINAIRE, HEXADÉCIMAL, ...
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 2010
-
25 oct. 2008 à 19:47
Dev -
7 mai 2018 à 17:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
syl20dies
Messages postés13Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention29 janvier 2009 29 oct. 2008 à 18:07
simplement parcque des fois on connait pas la fonction qui permet de l'ecrire en 1 ligne ;-), merci pour str_pad();
ceci dit quand on passe d'un language à un autre, il est parfois plus rapide de réecrire des choses qui existent que de chercher dans un manuel parmis des miliers de fonctions plus ou moins bien documentées celle qui nous eviterait d'écrire 3 lignes basiques, il en va de même pour la politique de masquage des données dans les variables et parametres de fonctions, mais merci avous deux AlphaOrionis et jeca, j'en prend note ;-)
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 29 oct. 2008 à 17:29
Pourquoi faire simple quand on peut faire compliqué :
<?php
$valeur = 3;
echo str_pad(base_convert(3, 10, 2), 8, '0', STR_PAD_LEFT);
//-- affiche : 00000011 -------------
?>
Dans tous les cas, les fonctions natives sont plus rapides. Et pourquoi écrire dix lignes quand une seule suffit ?
AlphaOrionis
Messages postés12Date d'inscriptiondimanche 8 octobre 2006StatutMembreDernière intervention29 octobre 2008 29 oct. 2008 à 16:59
Je pense que le plus pratique reste de rajouter ta petite fonction.
Pour ta fonction, cette ligne est inutile : $newstr=$pstr;
$pstr est déjà une variable locale, prend juste soin de lui donner un nom unique. ;)
syl20dies
Messages postés13Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention29 janvier 2009 29 oct. 2008 à 15:55
Bonjour, l'avantage de réecrire du built-in, c'est de pouvoir le recoder si l'on veut en changer légerement le fonctionement.
Aussi je me demandais peut on editer de telles fonctions?(je suis sous windows avec easyphp)existe t'il un répertoire contenant les classes built-in, ou sont elles compilées et sont elles plus rapides en termes d'execution qu'une classe ecrite à la main qui contiendrait exactement le même code?
en l'occurence si je voulais que convertDecToXBase( 2, 3, false) retourne '00000011' et non '11' vaut'il mieux?:
1)ecrire une fonction style
function completechaine($pstr,$d){
$newstr=$pstr;
while(strlen($newstr)<$d){$newstr="0".$newstr;}
return $newstr;
}
et faire completechaine(decbin(3),8)
ou
2)
récrire une classe comme nicof3 en ajoutant un parametre pour la longueur de la chaine retournée?
Merci d'avance pour vos suggestions
AlphaOrionis
Messages postés12Date d'inscriptiondimanche 8 octobre 2006StatutMembreDernière intervention29 octobre 2008 28 oct. 2008 à 19:58
Sans aller jusqu'à recoder volontairement et en connaissance de cause un fonction native, c'est vrai que savoir comment ça fonctionne est le meilleur moyen de se représenter son fonctionnement et donc le meilleur moyen de le comprendre.
Réciproquement, ce n'est pas parce qu'on a réussi à créer une fonction qui se répond de la même manière qu'il fonctionne de la même manière.
Une petite analogie : Linux a été développé pour qu'on lui parle l'Unix et répondre comme Unix, mais il ne tourne pas nécessairement de la même manière (sinon c'est Unix ici). Le principe est le même ici, si tu ne vas pas voir sous le capot tu ne fais qu'un modèle qui a le mérite d'exister et de représenter, mais pas d'être exactement juste. ;)
Palleas_44
Messages postés130Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 avril 2009 28 oct. 2008 à 15:06
@Nicof3 : Non, moi je ne m'amuse pas à recoder les fonctionnalités natives d'un langage, c'est différent
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 28 oct. 2008 à 15:03
Ce n'est pas une question de mentalité nicof3, c'est autre chose...
Toi si tu ne sais pas comment ça marche, tu peus le refaire mais il y a aussi des doc qui sont tout aussi bien !
a++
nicof3
Messages postés11Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention16 avril 2011 28 oct. 2008 à 08:10
Donc toi Palleas_44 tu utilise des "trucs" sans comprendre comment ça marche !!! Ce n'est pas la mentalité d'un programmeur ça !
Palleas_44
Messages postés130Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 avril 2009 27 oct. 2008 à 16:29
> Merci islrelamb ! C'est ce que je me dit toujours, pour bien comprendre, il faut savoir faire ;)
Je ne suis pas d'accord, ce que tu fais s'appelle réinventer la roue :/
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 27 oct. 2008 à 09:47
Tu ne devrais pas faire des "exit" lors d'erreur mais lever une exception.
ca permet de gerer proprement le fonctionnement le probleme et ainsi ne pas se retrouvé avec une page tronquée.
nicof3
Messages postés11Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention16 avril 2011 27 oct. 2008 à 08:12
Merci islrelamb ! C'est ce que je me dit toujours, pour bien comprendre, il faut savoir faire ;)
islrelamb
Messages postés1Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention26 octobre 2008 26 oct. 2008 à 12:24
salut, merci biennicof3 pour cette source j'ai un mini projet pour ce prblm, et tu n'a pas cassé votre tête c'est qlqn veut apprendre il faut qu'il fait les choses par kui même.
AlphaOrionis
Messages postés12Date d'inscriptiondimanche 8 octobre 2006StatutMembreDernière intervention29 octobre 2008 26 oct. 2008 à 10:33
Tu pourras au moins te vanter d'avoir recréé une fonction PHP par toi-même. ;)
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 26 oct. 2008 à 07:57
Bonjour,
Extrait du manuel PHP :
base_convert
(PHP 4, PHP 5)
base_convert — Convertit un nombre entre des bases arbitraires
Description
string base_convert ( string $number, int $frombase, int $tobase )
Retourne une chaîne contenant l'argument number représenté dans la base tobase. La base de représentation de number est donnée par frombase. frombase et tobase doivent être compris entre 2 et 36 inclus. Les chiffres supérieurs à 10 des bases supérieures à 10 seront représentés par les lettres de A à Z, avec A 10 et Z 35.
nicof3
Messages postés11Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention16 avril 2011 25 oct. 2008 à 21:01
Non je pense pas, essaye de convertir en base 12 avec decbin, dechex, decoct, bindec, octdec, hexdec !!!!
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 25 oct. 2008 à 19:47
Tu te casse pas un peu la tête pour rien ? Il existe déjà des fonctions built-in à PHP qui font la même chose (decbin, dechex, decoct, bindec, octdec, hexdec).
7 mai 2018 à 17:23
29 oct. 2008 à 18:07
ceci dit quand on passe d'un language à un autre, il est parfois plus rapide de réecrire des choses qui existent que de chercher dans un manuel parmis des miliers de fonctions plus ou moins bien documentées celle qui nous eviterait d'écrire 3 lignes basiques, il en va de même pour la politique de masquage des données dans les variables et parametres de fonctions, mais merci avous deux AlphaOrionis et jeca, j'en prend note ;-)
29 oct. 2008 à 17:29
<?php
$valeur = 3;
echo str_pad(base_convert(3, 10, 2), 8, '0', STR_PAD_LEFT);
//-- affiche : 00000011 -------------
?>
Dans tous les cas, les fonctions natives sont plus rapides. Et pourquoi écrire dix lignes quand une seule suffit ?
29 oct. 2008 à 16:59
Pour ta fonction, cette ligne est inutile : $newstr=$pstr;
$pstr est déjà une variable locale, prend juste soin de lui donner un nom unique. ;)
29 oct. 2008 à 15:55
Aussi je me demandais peut on editer de telles fonctions?(je suis sous windows avec easyphp)existe t'il un répertoire contenant les classes built-in, ou sont elles compilées et sont elles plus rapides en termes d'execution qu'une classe ecrite à la main qui contiendrait exactement le même code?
en l'occurence si je voulais que convertDecToXBase( 2, 3, false) retourne '00000011' et non '11' vaut'il mieux?:
1)ecrire une fonction style
function completechaine($pstr,$d){
$newstr=$pstr;
while(strlen($newstr)<$d){$newstr="0".$newstr;}
return $newstr;
}
et faire completechaine(decbin(3),8)
ou
2)
récrire une classe comme nicof3 en ajoutant un parametre pour la longueur de la chaine retournée?
Merci d'avance pour vos suggestions
28 oct. 2008 à 19:58
Réciproquement, ce n'est pas parce qu'on a réussi à créer une fonction qui se répond de la même manière qu'il fonctionne de la même manière.
Une petite analogie : Linux a été développé pour qu'on lui parle l'Unix et répondre comme Unix, mais il ne tourne pas nécessairement de la même manière (sinon c'est Unix ici). Le principe est le même ici, si tu ne vas pas voir sous le capot tu ne fais qu'un modèle qui a le mérite d'exister et de représenter, mais pas d'être exactement juste. ;)
28 oct. 2008 à 15:06
28 oct. 2008 à 15:03
Toi si tu ne sais pas comment ça marche, tu peus le refaire mais il y a aussi des doc qui sont tout aussi bien !
a++
28 oct. 2008 à 08:10
27 oct. 2008 à 16:29
Je ne suis pas d'accord, ce que tu fais s'appelle réinventer la roue :/
27 oct. 2008 à 09:47
ca permet de gerer proprement le fonctionnement le probleme et ainsi ne pas se retrouvé avec une page tronquée.
27 oct. 2008 à 08:12
26 oct. 2008 à 12:24
26 oct. 2008 à 10:33
26 oct. 2008 à 07:57
Extrait du manuel PHP :
base_convert
(PHP 4, PHP 5)
base_convert — Convertit un nombre entre des bases arbitraires
Description
string base_convert ( string $number, int $frombase, int $tobase )
Retourne une chaîne contenant l'argument number représenté dans la base tobase. La base de représentation de number est donnée par frombase. frombase et tobase doivent être compris entre 2 et 36 inclus. Les chiffres supérieurs à 10 des bases supérieures à 10 seront représentés par les lettres de A à Z, avec A 10 et Z 35.
25 oct. 2008 à 21:01
25 oct. 2008 à 19:47