0
Существует странная ситуация в SQLite:Неожиданный результат битовая в SQLite
первое положение (нормальное) с Bitmask 0x04:
import sqlite3
con = sqlite3.connect("~/test.db")
cursor = con.cursor()
cursor.execute("SELECT ((525824 & 04) == 04)")
print 'Sqlite bitwise masking 04: ', cursor.fetchall() #sqlite bitmask
# Sqlite bitwise masking 04: [(0,)] // E.g. false
print 'Python bitwise masking 04: ', 525824 & 0x04 == 0x04 #python bitmask
# Python bitwise masking 04: False // E.g. false
Одинаковые результаты в SQLite и Python. Это нормально.
второй ситуации (неожиданный) с Bitmask 0x00080000:
cursor.execute("SELECT ((525824 & 00080000) == 00080000)")
print 'Sqlite bitwise masking 00080000: ', cursor.fetchall()
# Sqlite bitwise masking 00080000: [(0,)] // E.g. False
print 'Python bitwise masking 00080000: ', 525824 & 0x00080000 == 0x00080000
# Python bitwise masking 00080000: True // E.g. True
Почему результаты во 2-ом случае различны?
Вы упускаете '0x' префикс в SQLite код. – Barmar
cursor.execute ("SELECT (525824 & 0x00080000) == 0x00080000") не работает. Как я могу это исправить? – John
Получил. Проще использовать 524288 = int ('0x00080000', 16) вместо hex. – John