Python 解码NumPy int64二进制表示
所以我做了一件愚蠢的事情,忘记了显式地将我放入SQLite数据库的一些值进行类型转换(使用Python的SQLalchemy)。该列被设置为存储Python 解码NumPy int64二进制表示,python,sqlite,numpy,sqlalchemy,Python,Sqlite,Numpy,Sqlalchemy,所以我做了一件愚蠢的事情,忘记了显式地将我放入SQLite数据库的一些值进行类型转换(使用Python的SQLalchemy)。该列被设置为存储INT,而输入实际上是numpy.int64dtype 我从数据库中获取的值如下所示: b'\x15\x00\x00\x00\x00\x00\x00\x00\x00' SQLite似乎已经为这些值存储了二进制表示,而不是整数本身 有没有办法在Python中解码这些值,或者我必须重新加载所有数据(目前不是一个简单的练习)?您可以使用: 我想在这种情况下,l
INT
,而输入实际上是numpy.int64
dtype
我从数据库中获取的值如下所示:
b'\x15\x00\x00\x00\x00\x00\x00\x00\x00'
SQLite似乎已经为这些值存储了二进制表示,而不是整数本身
有没有办法在Python中解码这些值,或者我必须重新加载所有数据(目前不是一个简单的练习)?您可以使用:
我想在这种情况下,little endian更可能是正确的
另外,我刚刚确认,当将
numpy.int64
插入SQLiteint
字段时,可以使用struct.unpack()
检索该字段,如上所示。谢谢,这很有用。数据确实是小端的。
>>> import struct
>>> value = struct.unpack('<q', b'\x15\x00\x00\x00\x00\x00\x00\x00')
>>> value
(21,)
>>> value[0]
21
>>> struct.unpack('>q', b'\x15\x00\x00\x00\x00\x00\x00\x00')
(1513209474796486656,)