将Excel公式转换为C#
我在Excel电子表格中有以下公式-将Excel公式转换为C#,c#,C#,我在Excel电子表格中有以下公式- =100000*INT(RIGHT(A2,8)/65536)+MOD(RIGHT(A2,8),65536) 结果示例 660013103525 = 19961861 10014528196 = 22144740 我被要求将此转换功能添加到C#应用程序中。电子表格的目的是将RFID标签转换为门禁系统识别的未知格式编号 我在C#中的所有尝试都没有成功,因为我不知道forula在做什么,也不知道最终的输出格式。这在C#中是相当的 假设您将数字输入存储在字符串
=100000*INT(RIGHT(A2,8)/65536)+MOD(RIGHT(A2,8),65536)
结果示例
660013103525 = 19961861
10014528196 = 22144740
我被要求将此转换功能添加到C#应用程序中。电子表格的目的是将RFID标签转换为门禁系统识别的未知格式编号
我在C#中的所有尝试都没有成功,因为我不知道forula在做什么,也不知道最终的输出格式。这在C#中是相当的 假设您将数字输入存储在字符串中:
String input = "660013103525";
您可以像这样获取与最后8位数字对应的最后8个字符,并将其转换为数字:
int val = int.Parse(input.Substring(input.Length-8, 8));
最终结果如下所示:
int result = 100000 * (val/65536) + (val % 65536);
您可以将其分解为一个接受字符串并返回整数值的方法:
int ComputeValue(String input)
{
// you should probably check input here
int val = int.Parse(input.Substring(input.Length-8,8));
return 100000 * (val/65536) + (val % 65536);
}
这会让你得到你的结果。如果您愿意,您可以进一步细化它,但这至少应该向您展示每一步的进展情况
string A2 = "660013103525";
int intA2, div, mod, output;
if (!int.TryParse(A2.Substring(A2.Length - 8, 8), out intA2))
throw new ArgumentOutOfRangeException("A2");
div = intA2 / 65536;
mod = intA2 % 65536;
output = 100000 * div + mod;
MessageBox.Show(output.ToString());
你明白这个公式的作用吗?更重要的是,找出正确的语法。显示您正在使用的代码。它将RFID标签转换为另一个未知格式的数字。我收到了电子表格,并要求将其转换为C#。你想在这里复制/粘贴它吗?此代码不编译(
子字符串
需要大写字母S),并且没有给出正确的结果。它的输出是3525。。。Substring
的参数也被反转。您生成了错误的子字符串:Substring(8,input.Length-8)应该是Substring(input.Length-8,8)Yep。。在我的手机上键入答案有点困难。现在修复欢迎使用StackOverflow!你能在你的回答中添加一些上下文吗?只有代码的答案被认为是“低质量”,请看一看:对不起!但我认为我的代码是不言自明的,并且给出了原始海报所需的输出。没问题,我们有一个审查系统来帮助新用户,如果你可以编辑你的答案,在某种环境下,这将非常好。当你在做的时候,最后一个结束}在代码标记之外。
class Program
{
static void Main()
{
int factor = 65536;
String cell = "660013103525";
String str = cell.Substring(cell.Length - 8);
long cellValue = Convert.ToInt64(str);
long part1 = cellValue / factor * 100000;
long part2 = cellValue % factor;
long result = part1 + part2;
Console.WriteLine("Input: " + cell);
Console.WriteLine("Output: " + result);
}
}