0

我已将十六进制值存储在带有 .ini 扩展名和地址的文本文件中。但是当我阅读它时,它不会是十六进制格式,而是字符格式,所以有没有办法将值读取为十六进制并将其存储在 C 语言或 CAPL 脚本中的字节中?

4

1 回答 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 回答