如何将python long(16byte uuid)转换为numpy unsigned int64数组?

时间:2016-03-09 10:04:08

标签: python numpy type-conversion long-integer uuid

我试图通过首先将它转换为numpy.ndarray(dtype=np.uint64, shape=(2, ))对象来找到在python中存储16byte(128bit)long int(uuid.UUID对象的int表示)的最佳方法。

我理解python long的内部内存表示并不简单,所以我假设内存中没有16bytes可以用来构造numpy.array

我目前的解决方案(python 2.7)是使用手动移动的长整数有效,但绝不优雅和快速。

import numpy as np

py_long = 0x1234567890abcdf8888888877777777L

# from (16byte) long to int64-array
np_arr = np.array([py_long >> 64, py_long & 0xffffffffffffffff], dtype=np.uint64)

# from int64 array to (16byte) long
py_long = (long(np_arr[0]) << 64) + long(np_arr[1])

我的具体问题是,如果有更简单,更快捷的方式来以这两种方式投射它们。

0 个答案:

没有答案