Il ne peut pas être fait de manière portative en Python avant la version 2.6; il a besoin des informations dans sys.float_info, ce qui est nouveau dans Python 2.6. Si vous voulez le faire de façon non portative, c'est-à-dire pour votre plate-forme particulière, vous devrez regarder le fichier float.h
pour le compilateur C qui a été utilisé pour produire votre Python 2.4/5, ou sur sys.float_info renvoyé par une implémentation 2.6 ou 2.7 sur votre plate-forme (et confiant qu'elle s'applique à votre Python 2.4/5). Ensuite, vous devriez regarder la fonction float_hex
dans la source Python (Objects/floatobject.c) et la traduire en Python et la tester (par rapport à un Python 2.6/7, peut-être).
Cela semble beaucoup de travail, pour quoi faire? Quel est ton but? Que voulez-vous faire qui ne peut être atteint avec repr(your_float)
?
Modifier: besoin d'un identifiant unique
Note que time.time() ne sont pas très précis:
"" » time.time() Retourne le temps en virgule flottante Notez que même si l'heure est toujours renvoyée sous la forme d'un nombre à virgule flottante, tous les systèmes n'offrent pas une précision supérieure à 1 seconde, alors que cette fonction renvoie normalement des valeurs non décroissantes. peut renvoyer une valeur inférieure à celle d'un appel précédent si l'horloge système a été rétablie entre les deux appels « » »
permettant jusqu'à un milliardième de seconde résolution:
>>> hex(int(time.time() * 1000000000))
'0x11ef11c41cf98b00L'
>>>
Est-ce suffisant?
Il serait utile si vous avez dit POURQUOI vous voulez faire cela, par exemple. qu'est-ce qui va consommer la chaîne hexagonale? –
J'en ai besoin pour créer un identifiant unique (avec d'autres choses). Si vous voulez savoir pourquoi, la réponse est: ce n'est pas mon choix. –
Si vous n'avez pas besoin d'être en mesure de récupérer l'heure à partir de l'identifiant unique, et que vous souhaitez simplement obtenir des nombres différents, essayez hash (time.time()) pour obtenir un entier et hex (hash (time. time())) pour obtenir une chaîne au format '0xBLAHBLAH'. –