Convertir le ShutdownTime

mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011 - 21 juil. 2011 à 22:13
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011 - 22 août 2011 à 21:59
Bonjour,

j'aimerais convertir ce code vbs en php svp :
et remplacer la pioche dans la bdr strValueName par la valeur directement dans le code php
strValueName = "123456789ABCDEF0"
merci

strValueName = "HKLM\SYSTEM\CurrentControlSet\Control\Windows" _
& "ShutdownTime"
Set oShell = CreateObject("WScript.Shell")
Ar = oShell.RegRead(strValueName)
Term = Ar(7)*(2^56) + Ar(6)*(2^48) + Ar(5)*(2^40) + Ar(4)*(2^32) _
+ Ar(3)*(2^24) + Ar(2)*(2^16) + Ar(1)*(2^8) + Ar(0)
Days = Term/(1E7*86400)
WScript.Echo "ShutdownTime = " & CDate(DateSerial(1601, 1, 1) + Days)

44 réponses

mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:41
<?php
$v = "123456789ABCDEF"

$v = ( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(1,7)*86400 )

echo $v
?>
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:45
<?php
$v = "1234567890ABCDEF"

$v = ( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(1,7)*86400 )

echo $v
?>
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
25 juil. 2011 à 22:51
Bonjour,

Bien, maintenant, comment lui dire de convertir les chaines obtenues de l'hexadécimal vers les décimal (car PHP a beau être très fort, il ne peut pas tout savoir tout seul) ?

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 23:03
<?php
$v = "1234567890ABCDEF"

$v = hexdec( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(1,7)*86400 )

echo $v
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 23:58
<?php
$v = "1234567890ABCDEF";

$v = hexdec( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(1,7)*86400 );

echo $v;
?>
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
26 juil. 2011 à 00:08
<?php
$v = "1234567890ABCDEF";

$v = hexdec( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(1,7)*86400 );

echo date('j/m/Y H:M', $v);
?>
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
26 juil. 2011 à 11:04
a*(2^x), permet de décaler la valeur a de x bits

Oui je suis d'accord mais il existe un opérateur pour décaler des bits non ??
ici !!
S.
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
26 juil. 2011 à 12:54
Bonjour,

mickythekiller, ta formule me semple incorrecte, j'ai rapidement regardé et j'ai vu que tu as traduit :
1E7 par pow(1,7)
1^7==1
1E7!=1

E c'est 10^, à toi de corriger.

Merci syndrael pour ta précision, cela me permet de compléter mes connaissances de PHP (qui ne sont pas très étendues).

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
26 juil. 2011 à 15:02
<?php
$v = "1234567890ABCDEF";

$v = hexdec( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(10,7)*86400 );

echo date('j/m/Y H:M', $v);
?>
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
26 juil. 2011 à 20:44
Bonjour,

Maintenant que tu as le nombre de jours, tu n'a plus qu'à les ajouter à la date du 01/01/1601.

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
26 juil. 2011 à 21:36
<?php
$v = "1234567890ABCDEF";

$v = hexdec( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) / pow(10,7)*86400 );

$date = new DateTime('1601-01-01');
$date->add(new DateInterval('P10D'));

echo $date('j/m/Y H:M', $v);
?>
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
26 juil. 2011 à 21:54
Bonjour,

Je n'avais pas fait attention, mais le hexdec doit être appliqué à chacun des substr et non à tout l'ensemble.
As-tu testé ton code

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
26 juil. 2011 à 22:48
<?php
$v = "1234567890ABCDEF";

$v = hexdec(substr($v,0,2)*(2^56)) + hexdec(substr($v,2,2)*(2^48)) + hexdec(substr($v,4,2)*(2^40)) + hexdec(substr($v,8,2)*(2^32)) + hexdec(substr($v,10,2)*(2^24)) + hexdec(substr($v,12,2)*(2^16)) + hexdec(substr($v,14,2)*(2^8)) / pow(10,7)*86400 );

$date = new DateTime('1601-01-01');
$date->add(new DateInterval('P10D'));

echo $date('j/m/Y H:M', $v);
?> 
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
26 juil. 2011 à 23:00
Bonjour,

As-tu compris à quoi te sert hexdec dans ton cas ?

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
26 juil. 2011 à 23:25
hexdec converti l'hexa en décimal...
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
27 juil. 2011 à 09:07
Bonjour,

D'accord, alors quelle est la partie à convertir de l'hexa vers le décimal ?
- substr($v,0,2)*(2^56)
- substr($v,0,2)
- (2^56)
?

Ensuite à toi de gérer tes parenthèses.

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
27 juil. 2011 à 10:23
<?php
$v = "1234567890ABCDEF";

$v = hexdec(substr($v,0,2))*(2^56) + hexdec(substr($v,2,2))*(2^48) + hexdec(substr($v,4,2))*(2^40) + hexdec(substr($v,8,2))*(2^32) + hexdec(substr($v,10,2))*(2^24) + hexdec(substr($v,12,2))*(2^16) + hexdec(substr($v,14,2))*(2^8) / (pow(10,7)*86400) ;

$date = new DateTime('1601-01-01');
$date->add(new DateInterval('P10D'));

echo $date('j/m/Y H:M', $v);
?> 
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
27 juil. 2011 à 21:57
Bonjour,

ça te donne ton résultat ou pas alors ?
Et pourquoi le "$v" dans le echo ?

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
28 juil. 2011 à 00:28
non erreur line 6
datetime
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
28 juil. 2011 à 13:13
Bonjour,

Et sans passer de paramètre au constructeur et en utilisant la méthode SetDate ?

Mon site
0
Rejoignez-nous