[PHP] Problème avec un algorithme

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

  • Votes
  • Date
  • Date décroissante
  1. 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;
    1. Merci c'est exactement ça. ;)
  2. 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 ...
    1. 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;
      ?>