Θέλω να πάρω έναν ακέραιο αριθμό (που θα είναι <= 255), σε μια δεκαεξαδική συμβολοσειρά αναπαράστασης
π.χ: Θέλω να περάσω το 65
και να βγάλω το '\x41'
, ή το 255
και να πάρω το '\xff'
.
Προσπάθησα να το κάνω αυτό με το struct.pack('c',
65)
, αλλά αυτό πνίγεται σε οτιδήποτε πάνω από το 9
, αφού θέλει να λάβει μια συμβολοσειρά ενός χαρακτήρα.
Ψάχνετε για τη συνάρτηση chr
.
Φαίνεται ότι αναμιγνύετε τις δεκαδικές αναπαραστάσεις των ακεραίων και τις δεκαεξαδικές αναπαραστάσεις των ακεραίων, οπότε δεν είναι απολύτως σαφές τι χρειάζεστε. Με βάση την περιγραφή που δώσατε, νομίζω ότι ένα από αυτά τα αποσπάσματα δείχνει αυτό που θέλετε.
>>> chr(0x65) == '\x65'
True
>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True
Σημειώστε ότι αυτό είναι αρκετά διαφορετικό από ένα αλφαριθμητικό που περιέχει έναν ακέραιο ως δεκαεξαδικό. Αν αυτό είναι που θέλετε, χρησιμοποιήστε το builtin hex
.
Τι γίνεται με το hex()
;
hex(255) # 0xff
Αν θέλετε πραγματικά να έχετε το \
μπροστά, μπορείτε να το κάνετε:
print '\\' + hex(255)[1:]
Δοκιμάστε:
"0x%x" % 255 # => 0xff
ή
"0x%X" % 255 # => 0xFF
Η Τεκμηρίωση της Python λέει: "κρατήστε αυτό κάτω από το μαξιλάρι σας: http://docs.python.org/library/index.html",