我正在使用.Net Micro Framework编写嵌入式设备的代码,我有一组计算的整数,如下面的链接所示,我需要访问但是如果这些信息可以以某种方式最小化,我会喜欢它,基本上我有一个数字列表,范围从150 - 4,每个数字有一个相邻的数字列表,它可以链接到,ex 150可以链接到149,148,146,144,142等,一些数字(150到4)分享联系号码150& 149分享91作为一个例子以及许多其他人,所以我认为必须有一些代表所有这些数字的内存占用减少,因为有很多共享链接数字,任何建议都会很棒。
https://www.dropbox.com/s/qqn8097571r9s27/LinkedNumbers.txt
示例数据
150 = 149,148,146,144,142,140,138,136,134,99,93,92,91,87
149 = 148,147,145,143,141,139,137,135,133,131,129,103,102,97,96,93,92,91
148 = 147,146,145,144,142,140,138,136,134,132,99,97,94,92,91,88,87,86
147 = 146,145,144,143,141,139,137,135,133,131,95,91,90,89,88
答案 0 :(得分:3)
将每一行存储为19字节的位序列,其中一行表示列表中的条目,零表示不在列表中的值。
例如,您的第一个条目是: -
150 = 149, 148, 146, 144, 142, 140, 138, 136, 134, 99, 93, 92, 91, 87,
83, 79, 77, 65, 63, 59, 55, 54, 53, 51, 49, 48, 47, 46, 45, 44,
43, 42, 41, 40, 39, 38, 37, 35, 34, 33, 31, 29, 27, 25, 23, 22,
21, 19, 18, 17, 14, 13, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2
可以存储为: -
150 = 0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0.....
其中第一位表示0,第二位表示1,等等
您可以通过减少每行使用的位数来提高存储效率,但要检查的位的计算会变得有点复杂。使用它,整个批次可以存储在1416个字节中。
答案 1 :(得分:1)
如果两个连续数字之间的最大减量不超过(例如64
),那么您可以将每个序列存储为6位无符号减量值的列表。
示例:
150 = 149, 148, 146, 144, 142, 140, 138, 136, 134, 99, 93, 92, 91, 87
成为:
150 = 1, 1, 2, 2, 2, 2, 2, 2, 2, 35, 6, 1, 1, 4