Wie kann ich den Typ einer Variablen erkennen? (z. B. unsigned 32 bit)
Antworten
Zu viele Anzeigen?Meinen Sie in Python oder mit ctypes ?
Im ersten Fall geht das einfach nicht, weil Python keine 16/32-Bit-Ganzzahlen mit und ohne Vorzeichen kennt.
Im zweiten Fall können Sie type()
:
>>> import ctypes
>>> a = ctypes.c_uint() # unsigned int
>>> type(a)
<class 'ctypes.c_ulong'>
Für weitere Informationen über ctypes und seinen Typ, siehe die offizielle Dokumentation .
Python hat solche Typen, wie Sie sie beschreiben, nicht. Es gibt zwei Typen, die zur Darstellung ganzzahliger Werte verwendet werden: int
was dem Typ int der Plattform in C entspricht, und long
ist eine Ganzzahl mit beliebiger Genauigkeit (d. h. sie wächst nach Bedarf und hat keine Obergrenze). int
s werden stillschweigend umgewandelt in long
wenn ein Ausdruck ein Ergebnis liefert, das nicht in int
.
Es kommt wirklich darauf an, welches Niveau Sie meinen. In Python 2.x gibt es zwei Integer-Typen, int
(gezwungenermaßen sys.maxint
) und long
(unbegrenzte Genauigkeit), aus historischen Gründen. Im Python-Code sollte dies keinen Unterschied machen, da der Interpreter automatisch in long konvertiert, wenn eine Zahl zu groß ist. Wenn Sie wissen wollen, welche Datentypen der zugrundeliegende Interpreter tatsächlich verwendet, ist das von der Implementierung abhängig. (Die CPython-Typen befinden sich in Objects/intobject.c und Objects/longobject.c.) Um etwas über die Systemtypen herauszufinden, schauen Sie sich die Antwort von cdleary zur Verwendung des struct-Moduls an.