假设我有一行包含3 +属性A,B,C和其他Attrs
row1: A=1, B=5, C=10, Other Attrs
row2: A=1, B=5, C=10, Other Attrs
row3: A=2, B=5, C=10, Other Attrs
row4: A=2, B=5, C=10, Other Attrs
row5: A=3, B=6, C=11, Other Attrs
row6: A=3, B=6, C=11, Other Attrs
因此,如果我想通过A,B,C,row1的组合为每一行分配组ID,则row2具有相同的组id x,第3行第4行具有组id y,第5行第6行具有组id z。
一个简单的解决方案是:
group id = A * S + B * S^2 + C * S^3 (S is the max integer number)
但我的问题是我需要一个算法来从组ID
中退出每个A,B,C值例如,我需要能够从组ID x中退出A = 1,B = 5,C = 10
答案 0 :(得分:6)
首先,这就足够了:
group id = A + B * S + C * S^2;
要回到A,B和C:
A = id % S;
B = (id / S) % S;
C = (id / S^2);
其中/
是整数除法,%
是模数。
答案 1 :(得分:0)
根据您的示例,更简单的方法是:
a * 10^6 + b*10^3 + c
会给你
001005010
001005010
002005010
002005010
003006011
003006011
和此函数的反函数非常简单。如果您的号码可能超过3位数,请相应调整。