C# uint64 -- 存储数据?
C# uint64 -- Store data?
有没有更好的方法在 uint64 中存储数字数据,而不是一件用 x 位,其他用 y 位? (总共 20 位数字)
我正在尝试存储有关对象的信息,而无需创建结构或 class 的开销。我需要以最小的开销尽快 get/set。
因此,据我所知体素编码。如果你想存储一个一个定义的 "blocks" 数据,那么你可以使用 interval tree ,其中每个节点的键是 运行 的开始值为运行的坐标。 Implemntation example。
此外,您永远不会将单个块存储为 class,但可以将块集(例如块 3x3)存储为:
如你所见,我只是将 9 个块的数据位置编码为两位
这是一种简化的方法,数据大小不是问题,而是需要某种算法才能快速实现迭代。
在开始玩 Voxels 之前,请先阅读这些内容
互联网上到处都是答案,但这些会提供您需要的信息。另外,我认为您遗漏的关键字是 VOXEL
如果使用uint64
或ulong
不是固定要求,我建议您使用BigInteger class。它旨在有效地存储任意大的数字。
效率高吗?如果你反编译代码,你会看到它们在内部存储了一个位数组来管理数字。也就是说,使用 N
位,它存储的数字最多为 2^N - 1
.
有没有更好的方法在 uint64 中存储数字数据,而不是一件用 x 位,其他用 y 位? (总共 20 位数字)
我正在尝试存储有关对象的信息,而无需创建结构或 class 的开销。我需要以最小的开销尽快 get/set。
因此,据我所知体素编码。如果你想存储一个一个定义的 "blocks" 数据,那么你可以使用 interval tree ,其中每个节点的键是 运行 的开始值为运行的坐标。 Implemntation example。
此外,您永远不会将单个块存储为 class,但可以将块集(例如块 3x3)存储为:
如你所见,我只是将 9 个块的数据位置编码为两位 这是一种简化的方法,数据大小不是问题,而是需要某种算法才能快速实现迭代。
在开始玩 Voxels 之前,请先阅读这些内容
互联网上到处都是答案,但这些会提供您需要的信息。另外,我认为您遗漏的关键字是 VOXEL
如果使用uint64
或ulong
不是固定要求,我建议您使用BigInteger class。它旨在有效地存储任意大的数字。
效率高吗?如果你反编译代码,你会看到它们在内部存储了一个位数组来管理数字。也就是说,使用 N
位,它存储的数字最多为 2^N - 1
.