Python шестнадцатеричное сравнение

Согласованный с Michael Haren .

Также рассматривают использование массивов и соединения, если производительность является действительно проблемой.

var buffer = ["click here"];
buffer.push("More stuff");
alert(buffer.join(""));

7
задан SilentGhost 11 December 2009 в 13:42
поделиться

3 ответа

Преобразуйте вашу строку в целое число, используя встроенную функцию int () и указав базу:

>>> int('0x01010000',16)
16842752

Теперь у вас есть стандартное целое число, представляющее битсет. используйте & , | и любой другой побитовый оператор для проверки отдельных битов.

>>> 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

Теперь, если вам нужно преобразовать обратно в строку:

>>> hex(value)
'0x1000100'
14
ответ дан 6 December 2019 в 12:51
поделиться

Вы можете сначала преобразовать вашу строку в целое число:

s = "0x01010000"
i = int(s, 16) #i = 269484032

затем вы можете настроить список для фруктов:

fruits = [(0x01000000, "apple"), (0x00010000, "orange"), (0x00000100, "banana")]

для определения того, какие у вас фрукты, этого достаточно:

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 fruit 'apple' is contained in '0x01010000'
The fruit 'orange' is contained in '0x01010000'
2
ответ дан 6 December 2019 в 12:51
поделиться
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
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: