Python hexadecimal comparison
You could first of all convert your string to an integer:
s = "0x01010000"
i = int(s, 16) #i = 269484032
then, you could set up a list for the fruits:
fruits = [(0x01000000, "apple"), (0x00010000, "orange"), (0x00000100, "banana")]
for determing what fruits you have that is enough:
s = "0x01010000"
i = int(s, 16)
for fid,fname in fruits:
if i&fid>0:
print "The fruit '%s' is contained in '%s'" % (fname, s)
The output here is:
The fruit 'apple' is contained in '0x01010000'
The fruit 'orange' is contained in '0x01010000'
Convert your string to an integer, by using the int()
built-in function and specifying a base:
>>> int('0x01010000',16)
16842752
Now, you have a standard integer representing a bitset. use &
, |
and any other bitwise operator to test individual bits.
>>> value = int('0x01010000',16)
>>> apple = 0x01000000
>>> orange = 0x00010000
>>> banana = 0x00000100
>>> bool(value & apple) # tests if apple is part of the value
True
>>> value |= banana # adds the banana flag to the value
>>> value &= ~orange # removes the orange flag from the value
Now, if you need to convert back to your string:
>>> hex(value)
'0x1000100'