我们有6组,每组253台计算机,但是每组的范围是从2号机到#254号机,并延续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)

还有另一种方式
示例:如果我获取了parameter:group#2 machine#5,则该函数必须返回ID 510
我怎样才能做到这一点?
我有一个公式,但是没有用
有任何想法吗?
谢谢

最佳答案

首先从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,请执行相反的操作。从机器号中减去2,使其从零开始,合并它们,然后加一:

int GetId(int group, int machine) {
   return group * 253 + (machine - 2) + 1;
}

关于c# - 如何创建C#函数以将数字范围的组转换为连续数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/900689/

10-11 04:04