我试图通过首先将它转换为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])
我的具体问题是,如果有更简单,更快捷的方式来以这两种方式投射它们。