HEXA EN RVB

stepibou Messages postés 112 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 11 octobre 2006 - 8 févr. 2005 à 20:06
stepibou Messages postés 112 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 11 octobre 2006 - 8 févr. 2005 à 20:06
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/12893-hexa-en-rvb

stepibou Messages postés 112 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 11 octobre 2006
8 févr. 2005 à 20:06
hello, Vapula, et les autres,

j'ai utilisé ta source, mais y a deux petites erreurs :
- les ; de la boucle for.
- une parentaise en trop a la ligne ou y a strlen.

voici le code corrigé :

function hex_rvb($hex){

// test si la $hex est un tableau
if(!is_array($hex)) {
print("Vous devez saisir un tableau");
return 0;
}
$str_hex ="";

//conversion enchaine pour tester les caractères
for($i=0; $i<3; $i++){
$str_hex = $str_hex.$hex[$i];
}
//teste de la chaine de caractere
if(! ereg("[0-9a-fA-F]{6}", $hex)) {
print("Ce n'est pas un nombre hexadécimal");
return 0;
}

$rvb = "";

for($i=0; $i<3; $i++) {

// teste si la valeur a une longuer de 2
if(strlen($hex[$i]) < 2) {
print("La ".$i." valeur n'est pas une valeur hexa : 2 caracteres par case");
return 0;
}

//conversion en hexadecimal et création de la chaine rvb
$rvb = $rvb.(hexdec($hex[$i]))." ";

//pour ceux que l'espace de fin dérange
$rvb = trim($rvb);

}
return $rvb;
}

Voila sinon tu pourrai expliquer quoi mettre ds ta fonction.
J'ai une autre version sans utiliser array :

function hex_rvb($hex){

//teste de la chaine de caractere
if(! ereg("[0-9a-fA-F]{6}", $hex)) {
print("Ce n'est pas un nombre hexadécimal");
return 0;
}

$rvb = "";

for($i=0; $i<3; $i++) {

//conversion enchaine pour tester les caractères
$hexe[$i] = substr($hex, 2*$i, 2);
// teste si la valeur a une longuer de 2
if(strlen($hexe[$i]) < 2) {
print("La ".$i." valeur n'est pas une valeur hexa : 2 caracteres par case");
return 0;
}

$temp = hexdec($hexe[$i]);
if(strlen($temp) < 2){
// ajout du zéro
$temp = "0". $temp;
}
if(strlen($temp) < 3){
// ajout du zéro
$temp = "0". $temp;
}

//conversion en hexadecimal et création de la chaine rvb
$rvb = $rvb.($temp)." ";

//pour ceux que l'espace de fin dérange
$rvb = trim($rvb);

}
return $rvb;
}

bye ;-)
Rejoignez-nous