我们有6组,每组253台机器,但每组的范围从机器#2到机器#254,
并继续用于表示每台机器的ID。
如下表所示:
集团机器ID
0 2-254 1-253
1 2-254 254-506
2 2-254 507-759
3 2-254 760-1012
4 2-254 1013-1265
5 2-254 1266-1518
我正在寻找一种简单的c#方式来编写一个从ID转换为组机的功能
例如:ID 508是组#2,机器#3
(机器507是组2中的第一台机器,因为它从2开始,第二机器是机器#3)
还有另一种方式
例如:如果我得到参数:组#2机器#5,该功能必须返回ID 510
我怎么能这样做?
我带了一个公式,但它不起作用
任何想法?
感谢
答案 0 :(得分:4)
首先从id中减去一个以使其为零,然后您可以将其分为组和机器,并通过添加两个来将机器编号调整为2-254范围:
id--;
int group = id / 253;
int machine = (id % 253) + 2;
作为两个独立的功能:
int GetGroup(int id) {
return (id - 1) / 253;
}
int GetMachine(int id) {
return ((id - 1) % 253) + 2;
}
要从群组和机器中获取ID,请执行相反的操作;从机器编号中减去两个以使其为零,合并它们并添加一个:
int GetId(int group, int machine) {
return group * 253 + (machine - 2) + 1;
}
答案 1 :(得分:0)
这个怎么样?
function getid ( int g, int m ) {
return g * (254 - 1 ) + m - 1;
}
我认为这是对的吗?简化为:
function getid ( int g, int m ) {
return g * 253 + m - 1;
}
IE
2 * 253 + 3 = 508
2 * 253 + 5 = 510