gpt4 book ai didi

c# - 如果我们有一个包含项目列表的位掩码,如何存储项目的顺序?

转载 作者:太空宇宙 更新时间:2023-11-03 14:03:00 25 4
gpt4 key购买 nike

我的数据库中有一个用于存储项目列表的位掩码。之前我只是在屏幕上一个一个地渲染这些项目。但是现在用户应该能够设置项目的顺序。我有一个我不喜欢的解决方案:使用一些分隔符(类似于 1|8|4|16)在字段中存储 ID 列表。

谁能帮我找到另一个解决方案?

最佳答案

如果项目的数量上限为特定数量(比如 15),您可以将较小数字的列表存储在较大的数字类型中。本质上,您的列表变成了 4 位组的“掩码”,其中每个组代表 0 到 15 之间的一个数字,包括 0 到 15。对于 15 个项目,您需要 60 位来存储这样的列表。方便的是,大多数数据库都支持 64 位整数类型,因此您需要做的就是实现一个打包算法。由于项数是 15,4 位可以存储的状态数是 16,所以可以使用全 0 的组合来表示“不存在”;所有非零组合代表项目的数量。

这比将数字列表存储在字符串中要快得多,而且要紧凑得多。但是,它更难扩展,因为位组的长度(在本例中为 4)取决于您希望存储的项目数。

关于c# - 如果我们有一个包含项目列表的位掩码,如何存储项目的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com