使用CAPL进行十进制到十六进制转换

时间:2019-07-01 10:28:12

标签: capl

是否有用于将十进制值转换为十六进制值的CAPL函数?我已经查看过CAPL浏览器的帮助选项。

2 个答案:

答案 0 :(得分:0)

假设您希望将数字转换为字符串,则可以打印出来。要么进入写入窗口,要么进入测试报告,等等。

您可以像这样使用snprintf

snprintf(buffer,elcount(buffer),"%x",integervariable);

其中buffer是一个足够大的char数组。

此示例摘自Vector knowledge base,是Google的第一个搜索结果。

答案 1 :(得分:-1)

对于十六进制等效值:

您可以通过以下方式使用_pow函数(将x返回y的幂)和while,以返回十六进制等效值:

double decToHexEquivalent(int n) 
{
  int counter,remainder,decimal_number,hexadecimal_number  = 0;
  while(n!=0)
  {
    remainder = decimal_number % 16;
    hexadecimal_number = hexadecimal_number + remainder * _pow(10, counter);
    n=n/16;
    ++counter;
  }
  return hexadecimal_number;
}

您可以通过以下方式调用上述函数:

testfunction xyz(int n)
{
  write("Hexadecimal:%d", decToHexa(n));
}

警告:未经测试

十六进制值

在变量部分声明全局变量char buffer[100]

variables
{
  char buffer[100];  
}

,然后使用snprintf函数,您可以将整数变量转换为字符数组,如下所示:

void dectohexValue(int decimal_number)
{
  snprintf(buffer,elcount(buffer),"%02X",decimal_number);
}

然后,您最终可以使用以下功能:

testfunction xyz(int n)
{
  dectohexValue(n);
  write("Hexadecimal:%s", buffer);
}