Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python

Notez que j'oublie toujours comment utiliser ctyes. Je veux voir les octets en mémoire de a quand a = 0,5.

>>> import ctypes
>>> a = ctypes.c_float(0.5)
>>> a
c_float(0.5)
>>> a.value
0.5
>>> ctypes.cast(ctypes.byref(a), ctypes.POINTER(ctypes.c_float))
<__main__.LP_c_float object at 0x000001FF2A2F59C8>
>>> ctypes.cast(ctypes.byref(a), ctypes.POINTER(ctypes.c_char))
<ctypes.LP_c_char object at 0x000001FF2A2F5B48>
>>> ctypes.cast(ctypes.byref(a), ctypes.POINTER(ctypes.c_char))[0:4]
b'\x00\x00\x00?'

Si vous ne spécifiez pas la plage avec [0: 4], vous vous fâcherez. (Erreur si [:]) Correction de la sortie pour qu'elle soit facile à comprendre.

>>> b = lambda f: [f'{b:02x}' for b in ctypes.cast(ctypes.byref(ctypes.c_float(f)), ctypes.POINTER(ctypes.c_char))[0:4]]
>>> b(0.5)
['00', '00', '00', '3f']

Au fait, d'autres nombres sont

>>> b(0.25)
['00', '00', '80', '3e']
>>> b(0.866)
['2d', 'b2', '5d', '3f']
>>> b(0.433)
['2d', 'b2', 'dd', '3e']
>>> b(0.216)
['1b', '2f', '5d', '3e']
>>> b(0.0)
['00', '00', '00', '00']
>>> b(1.0)
['00', '00', '80', '3f']

Vérifiez l'inverse (flottant à partir de la chaîne d'octets).

>>> f = lambda b: ctypes.cast(ctypes.create_string_buffer(b), ctypes.POINTER(ctypes.c_float))[0]
>>> f(b'\x2d\xb2\x5d\x3f')
0.8659999966621399
>>> f(b'\x2d\xb2\xdd\x3e')
0.43299999833106995
>>> f(b'\x2d\xb2\x5d\x3e')
0.21649999916553497
>>> f(b'\x3a\xcd\x13\xbf')
-0.5773502588272095

Recommended Posts

Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Vérifiez si la chaîne est un nombre en python
Obtenez le nombre d'éléments spécifiques dans la liste python
Vérifiez le comportement du destroyer en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Sortie du nombre de cœurs de processeur en Python
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Sortie sous la forme d'un tableau python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment obtenir le nombre de chiffres en Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
[Python] Un programme qui trouve le nombre d'étapes le plus court dans un jeu qui traverse les nuages
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
[Python] Représentation du nombre de plaintes des compagnies d'assurance-vie dans un graphique à barres
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Découvrez la largeur apparente d'une chaîne en python
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Python --Trouvez le nombre de groupes dans l'expression regex
[Note] Importation de fichiers dans le répertoire parent en Python
[Homologie] Comptez le nombre de trous dans les données avec Python
Trouver les valeurs propres d'une vraie matrice symétrique en Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment déterminer l'existence d'un élément sélénium en Python
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Une fonction qui mesure le temps de traitement d'une méthode en python
Ecrire le test dans la docstring python
Afficher une liste d'alphabets en Python 3
Vérifiez si l'URL existe en Python
Exécuter l'interpréteur Python dans le script
Le résultat de l'installation de python sur Anaconda
Vérifiez le chemin du module importé Python
[python] [meta] Le type de python est-il un type?
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
L'histoire du traitement A du blackjack (python)
Projet Euler # 17 "Nombre de caractères" en Python
Python VBA pour obtenir une capture de la page WEB entière avec Selenium
[Python] Un programme qui calcule le nombre de segments de chocolat qui remplissent les conditions
Si vous voulez un singleton en python, considérez le module comme un singleton
[Python] Un programme qui calcule le nombre de chaussettes jumelées
Générez une liste contenant le nombre de jours du mois en cours.
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
[Python] Calculez le nombre de chiffres requis lors de la saisie de 0 [Note]
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Obtenez une instance datetime à tout moment de la journée en Python
Configurer un serveur SMTP factice avec Python et vérifier le fonctionnement de l'envoi depuis Action Mailer
Comptez le nombre de fois que deux valeurs apparaissent simultanément dans un élément de type itérateur Python 3
4 méthodes pour compter le nombre d'occurrences d'entiers dans un certain intervalle (y compris la méthode imos) [implémentation Python]
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Dessiner un graphique d'une fonction quadratique en Python
[python] Vérifier les éléments de la liste tous, tous