我已将十六进制值存储在带有 .ini 扩展名和地址的文本文件中。但是当我阅读它时,它不会是十六进制格式,而是字符格式,所以有没有办法将值读取为十六进制并将其存储在 C 语言或 CAPL 脚本中的字节中?
问问题
949 次
1 回答
4
我假设您知道如何在 CAPL 中读取文本文件...
您可以使用 将十六进制字符串转换为数字strtol(char s[], long result&):long
。请参阅 CAPL 帮助(CAPL 功能概述 -> 常规 -> strol):
数基是
- 如果字符串以“0x”开头,则为十六进制
- 如果字符串以“0”开头,则为八进制
- 否则为十进制
忽略开头的空格(空格或制表符)。
例子:
on start
{
long number1, number2;
strtol("0xFF", number1);
strtol("-128", number2);
write("number1 = %d", number1);
write("number2 = %d", number2);
}
输出:
number1 = 255
number2 = -128
另请参阅:strtoll()
、strtoul()
、strtoull()
和strtod()
atol()
更新:
如果十六进制字符串不以“0x”开头...
on message 0x200
{
if (this.byte(0) == hextol("38"))
write("byte(0) == 56");
}
long hextol(char s[])
{
long res;
char xs[8];
strncpy(xs, "0x", elcount(xs)); // cpy "0x" to 'xs'
strncat(xs, s, elcount(xs)); // cat 'xs' and 's'
strtol(xs, res); // convert to long
return res;
}
于 2015-09-09T16:13:10.063 回答