10
votes

Python Hexadecimal Comparaison

J'ai un problème que j'espérais que quelqu'un puisse m'aider à comprendre!

J'ai une chaîne avec un numéro hexadécimal = '0x00000000' ce qui signifie: xxx

Toutes les combinaisons avec celles-ci sont possibles. I.E., 0x01010000 = Apple & Orange

Comment puis-je de ma chaîne déterminer quel fruit il est? J'ai fait un dictionnaire avec toutes les combinaisons, puis comparer à cela, et ça marche! Mais je me demande de manière plus agréable de le faire.


0 commentaires

3 Réponses :


19
votes

Convertissez votre chaîne en un entier en utilisant la fonction int () de la fonction intégrée et spécifiant une base: xxx p> maintenant, vous avez un entier standard représentant un bitset. Utilisez & , | et tout autre opérateur bitwise pour tester des bits individuels. xxx

maintenant, si vous devez convertir Retour à votre chaîne: xxx


2 commentaires

C'est ce qu'on appelle les OP Bitwise et vous pouvez ou valoriser ensemble les résultats combinés. Le test, ((((64 | 80) = 80) retournera true si 64 (Apple) est orné dans 80 (la somme de toutes ou des valeurs). wiki.python.org/moin/bitwiseopérateurs et


Merci à tous pour des réponses rapides! Je vais lire sur des opérateurs bitwises!



2
votes

Vous pouvez tout d'abord convertir votre chaîne en un entier:

The fruit 'apple' is contained in '0x01010000'
The fruit 'orange' is contained in '0x01010000'


0 commentaires

0
votes
def WhichFruit(n):
    if n & int('0x01000000',16):
        print 'apple'
    if n & int('0x00010000',16):
        print 'orange'
    if n & int('0x00000100',16):
        print 'banana'

WhichFruit(int('0x01010000',16))

0 commentaires