C#uint64 - 存储数据?

时间:2015-11-10 17:34:40

标签: c# types primitive-types uint64 ulong

有没有更好的方法将数值数据存储在uint64中,而不是使用x个数字作为一个数字,y数字用于其他内容? (总共20位数)

我试图存储有关对象的信息,而没有制作结构或类的开销。我需要以最小的开销尽可能快地获取/设置。

2 个答案:

答案 0 :(得分:3)

所以,据我所知,体素编码。如果要存储逐个定义的“块”数据,则可以使用区间树,其中每个节点的键是运行的开始,值是运行的坐标。 Implemntation example

此外,您永远不会将单个块存储为类,但块的SET(例如块3x3)可以完成:

enter image description here

如你所见,我只用两位编码了9个块的数据位置 这是一种简化的方法,数据大小不是问题,但需要快速实现迭代,这需要形成一些算法。

在你开始玩Voxels之前,先阅读这些

Let's Make a Voxel Engine

Damn, Voxel Data is BIG

Voxel engines are everywhere…

Voxel Engine – Data Storage

互联网充满了回答,但这些将提供您需要的信息。我认为你正在关注的关键词是 VOXEL

答案 1 :(得分:1)

如果使用uint64ulong不是固定要求,建议您使用BigInteger class。它旨在有效地存储任意大数字。

有效吗?如果您反编译代码,您将看到它们在内部存储一个位数组来管理该数字。也就是说,对于N位,它会存储一个最多2^N - 1的数字。

相关问题