Десятичное в шестнадцатеричное преобразование с использованием CAPL - PullRequest
0 голосов
/ 01 июля 2019

Существует ли какая-либо функция CAPL для преобразования десятичного значения в шестнадцатеричное?Я уже посмотрел в справке вариант браузера CAPL.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Если вы хотите, чтобы число было преобразовано в строку, которую вы можете распечатать. Либо в окно записи, в тестовый отчет и т. Д.

Вы можете использовать snprintf так:

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

, где buffer - достаточно большой массив символов.

Этот пример взят из Векторные базы знаний и был одним из первых результатов в Google.

0 голосов
/ 01 июля 2019

Для шестнадцатеричного эквивалентного значения:

Вы можете использовать функцию _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);
}
...