在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为什么第二个病例的结果是不同的?
发布于 2014-09-13 20:58:14
第一种情况是因为十六进制4等于小数4,但在第二种情况下,十六进制0x80000不等于小数80000。
https://stackoverflow.com/questions/25827574
复制相似问题