如何创建c#函数以将数字范围组转换为连续数字

时间:2009-05-23 02:14:03

标签: c# .net c#-3.0

我们有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
我怎么能这样做?
我带了一个公式,但它不起作用 任何想法?
感谢

2 个答案:

答案 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