我有VB和c#的经验,但没有ST。我试图在一个值中找到第 n 个数字的值。即 654321 当 n = 3 时的第 n 个值应该返回 4。在 ST 中可以做到这一点吗?
问问题
41 次
1 回答
0
我建议将数字转换为字符串,然后您可以从字符串中找到第 n 个字符。当然,你没有告诉你的数字 654321 是字符串还是数值,但这并不重要。
下面的代码从左边开始取第三个字符。如果您需要从右边获取数字,您可以使用 LEN() 等函数编辑代码。
VAR
TestNumber : DINT;
TestString : STRING;
NthDigitAsString : STRING(1);
NthDigit : BYTE;
END_VAR
TestNumber := 654321;
//Convert to string
TestString := DINT_TO_STRING(TestNumber);
//Find the 3rd character (counting from from left)
NthDigitAsString := MID(TestString, 1, 3);
//Convert the character to number (if necessary)
NthDigit := STRING_TO_BYTE(NthDigitAsString);
这当然是一个长版本。找到下面的单行:
NthDigit := STRING_TO_BYTE(MID(DINT_TO_STRING(654321), 1, 3));
于 2018-09-12T08:58:32.680 回答