wismerhill40
Messages postés11Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention10 mai 2007
-
16 avril 2007 à 11:27
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020
-
18 avril 2007 à 14:36
Bonjour a tous !
JE debute dans le Php et je dois dire que j'ai un peu de mal mais je
dois utiliser cette fonction ecrite en delphi sur une page HTML .
function MacStr(const AMac : int64) : string;
var
pR : PChar;
pB : ^byte;
N : integer;
const
BTC : array[$0..$F] of char = '0123456789ABCDEF';
begin
pB := @AMac; {pointe l'@ mac}
inc(pB,5);
SetLength(Result, 17); {chaine de 17 caractères en sortie 6 octets de 2 caractères + 5 sépararteus}
pR := PChar(Result);
inc(pr,15); {pointe le résultat}
for N := 0 to 5 do
begin
if N >0 then
begin
pR[0] := '-';
dec(pR,2);
end;
pR[0] := BTC[ pB^ shr 4 ]; {décale la valeur binaire de @Mac de 4 vers la droite = division par 2^4 soit 16}
pR[1] := BTC[ pB^ and $F ];
dec(pB);
dec(pR, 1);
end;
end;
Pour la petite histoire ca me permet de remettre en forme une adresse MAC en entier sous forme Hexa.
Mais j'ai beaucoup de mal avec les pointeurs sous Php...
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 16 avril 2007 à 12:28
Bonjour,
Je ne suis pas sur que tout le monde comprenne le delphi ici. Serait-il possible de décrire précisement ce que tu attends de ta fonction stp? (donnée en entrée, donnée en sortie ainsi que le format...)
wismerhill40
Messages postés11Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention10 mai 20071 17 avril 2007 à 19:07
Bonjour ...
Oui pas de souci
Cette fonction me permet de rentrer un grand chiffre d'une bonne 10aine de numeros. Je cherche a obtenir un traitement qui me permettra d'obtenir, a partir de ce numero, l'adresse MAC en hexa 4F:45:6B ...car je ne l'ai pas dis mais ce numero est en fait une adresse MAC ! voila !
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 18 avril 2007 à 14:36
Désolé de ne répondre que maintenant mais je n'avais plus suivit la discussion.
Voici une petite fonction, qui je l'espère correspond à tes attentes. Elle attend une chaîne de bit en entrée et ressort une chaîne d'hexadécimal avec un tiret entre chaque octet (format de l'adresse mac) :
$lenght = strlen($AMac); // on récupère la taille de la chaîne de caractère
for($x = $lenght-4; $x >= 0;$x -= 4){ // on travail sur la chaîne en partant du dernier caractère
$index = substr($AMac,$x,4)*1; // on parse en int (je n'ai pas trouvé mieux pour le faire )
array_push($adresse_mac,$hex[$index]); //on ajoute le quartet dans le tableau
if ($x % 8 == 0 && $x != 0){ // on ajoute un tiret à chaque octet sauf pour le dernier
array_push($adresse_mac,"-");
}
}
$adresse_mac = array_reverse($adresse_mac); // on inverse le tableau pour afficher l'adresse dans le bon sens
return implode("",$adresse_mac); // on convertit le tableau en string et on renvoit la chaîne
}
// appel de la fonction et affichage de la valeur de retour
echo MacStr("111100001010100001110011");
?>