[PHP] Problème avec un algorithme

llomgui Messages postés 16 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

J'ai quelques problème en php pour une fonction que j'aimerai faire.
La fonction est la suivante:

J'aime convertir en hexadecimal un intervalle de nombre.
Exemple [1;15]
Reponse: (1;2;3;4;5;6;7;8;9;a;b;c;d;e;f).

Merci d'avance pour vos réponses.

4 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    voilà une solution:

    $chaine="[1;45]";
    //extraction des deux nombre de la chaine
    $chaine2=substr($chaine,1); // ote le [
    $chaine3=substr($chaine2,0,-1); //ote le ]
    $array_nbr=explode(";",$chaine3); //on sépare les deux nombres
    $nb_1=$array_nbr[0];
    $nb_2=$array_nbr[1];
    
    
    $array_reponse=array();
    for($n=$nb_1;$n<=$nb_2;$n++){
    	$array_reponse[]= dechex($n); //convertit le n en hexa
    }
    ///implode va mettre automatiquement les ; entre les nombres
    $reponse="(".implode(";",$array_reponse).")";
    echo "la trasnformation de l'intervale: ".$chaine;
    echo "<br /> est: ".$reponse;
    3
    1. llomgui Messages postés 16 Statut Membre
       
      Merci c'est exactement ça. ;)
      0
  2. llomgui Messages postés 16 Statut Membre
     
    UP =/
    0
  3. wolfy
     
    perso ce que je ferais c'est de faire un tableau avec la suite hexadécimal,
    et tu le parcourt a partir a partir de A jusque B, vu que ton entrée se trouve sous la forme (A,B).
    et tu le resors ... ca dépend de ce que tu veut ...
    0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    une autre solution avec preg_match_all pour extraire les nombres de la chaine

    <?php 
    $chaine="[1;45]";
    //extraction des deux nombre de la chaine avec le fct preg_match_all
    $masque='/([0-9]{1,})/';
    preg_match_all($masque,$chaine,$out,PREG_SET_ORDER);
    $nb_1=$out[0][0];
    $nb_2=$out[1][0];
    
    $array_reponse=array();
    for($n=$nb_1;$n<=$nb_2;$n++){
    	$array_reponse[]= dechex($n); //convertit le n en hexa
    }
    ///implode va mettre automatiquement les ; entre les nombres
    $reponse="(".implode(";",$array_reponse).")";
    echo "la trasnformation de l'intervale: ".$chaine;
    echo "<br /> est: ".$reponse;
    ?>
    0