SQLite中有一些奇怪的情况:
第一种情况(正常),位掩码为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中的结果相同。没关系。
第二种情况(意外)与位掩码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
为什么第二种情况的结果不同?
答案 0 :(得分:1)
第一种情况有效,因为十六进制4等于十进制4.但是,在第二种情况下,十六进制0x80000不等于十进制80000。