C#uint64——存储数据?

C#uint64——存储数据?,c#,types,primitive-types,uint64,ulong,C#,Types,Primitive Types,Uint64,Ulong,在uint64中存储数字数据是否有更好的方法,而不是使用x数字表示一件物品,y数字表示其他物品?(共有20位数字可供使用) 我试图存储关于对象的信息,而不需要生成结构或类的开销。我需要以最小的开销尽可能快地获取/设置。因此,就我所知,体素编码。如果要存储逐个定义的“块”数据,则可以使用间隔树,其中每个节点的键是运行的开始,值是运行的坐标 此外,您从不将单个块存储为类,但块集(例如块3x3)可以按以下方式进行: 正如你们所看到的,我刚刚把9个块的数据位置编码为两位 这是一种简化的方法,对于这种方

在uint64中存储数字数据是否有更好的方法,而不是使用x数字表示一件物品,y数字表示其他物品?(共有20位数字可供使用)


我试图存储关于对象的信息,而不需要生成结构或类的开销。我需要以最小的开销尽可能快地获取/设置。因此,就我所知,体素编码。如果要存储逐个定义的“块”数据,则可以使用间隔树,其中每个节点的键是运行的开始,值是运行的坐标

此外,您从不将单个块存储为类,但块集(例如块3x3)可以按以下方式进行:

正如你们所看到的,我刚刚把9个块的数据位置编码为两位 这是一种简化的方法,对于这种方法,数据大小不是问题,而是迭代的快速实现,它需要从您的算法中得到帮助

在开始玩体素之前,请阅读以下内容


互联网上充满了答案,但这些答案会提供你所需要的信息。另一个我认为你们误解的关键词是体素,据我所知,体素编码。如果要存储逐个定义的“块”数据,则可以使用间隔树,其中每个节点的键是运行的开始,值是运行的坐标

此外,您从不将单个块存储为类,但块集(例如块3x3)可以按以下方式进行:

正如你们所看到的,我刚刚把9个块的数据位置编码为两位 这是一种简化的方法,对于这种方法,数据大小不是问题,而是迭代的快速实现,它需要从您的算法中得到帮助

在开始玩体素之前,请阅读以下内容


互联网上充满了答案,但这些答案会提供你所需要的信息。另外,我认为您误解的关键词是体素

如果使用
uint64
ulong
不是固定要求,我建议您使用。它被设计用来高效地存储任意大的数字


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

如果使用
uint64
ulong
不是固定要求,我建议您使用。它被设计用来高效地存储任意大的数字


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

您能给出这些数字的示例吗?很难理解您的开销是什么意思。管理这种混合不是一种开销?您可以使用整数的特定位(使用)来存储信息,但在我看到的大多数情况下,它们大多是微优化,不值得做。你能举个例子说明你要储存什么吗?当然。嗯,我正在制作一个基于瓷砖的游戏(Minecraft、Terraria等),我需要一种有效存储块数据的方法,允许快速提取属性,例如:ID、shapeID、BiomeID、ownerID等。类和结构太慢,太大,无法快速存储和操作。例如:00031000230745238653。。。。00031=blockID 00023=shapeID 074=BiomeID rest=ownerIDOverhead是完成该操作所需的时间。您能否给出这些数字的示例?很难理解您的开销是什么意思。管理这种混合不是一种开销?您可以使用整数的特定位(使用)来存储信息,但在我看到的大多数情况下,它们大多是微优化,不值得做。你能举个例子说明你要储存什么吗?当然。嗯,我正在制作一个基于瓷砖的游戏(Minecraft、Terraria等),我需要一种有效存储块数据的方法,允许快速提取属性,例如:ID、shapeID、BiomeID、ownerID等。类和结构太慢,太大,无法快速存储和操作。例如:00031000230745238653。。。。00031=blockID 00023=shapeID 074=BiomeID rest=ownerIDOverhead是完成操作所需的时间。感谢链接!我不完全理解树的事情,但链接帮助。感谢链接!我不完全理解树的事情,但是链接有帮助。