CONVERTISSEUR DE BASE DÉCIMALE, BINAIRE, HEXADÉCIMAL, ...

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 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.

https://codes-sources.commentcamarche.net/source/48301-convertisseur-de-base-decimale-binaire-hexadecimal

N'as marche pas ce code
syl20dies Messages postés 13 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 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és 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
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és 12 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 29 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és 13 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 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és 12 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 29 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és 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 11 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 16 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és 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 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és 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 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és 11 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 16 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és 1 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 26 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és 12 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 29 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és 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
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és 11 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 16 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és 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
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).
Rejoignez-nous