Насколько я знаю, стандартной функции для этого нет, но ее можно достичь следующим образом:
#include <stdio.h>
int main(int argc, char **argv) {
const char hexstring[] = "DEadbeef10203040b00b1e50", *pos = hexstring;
unsigned char val[12];
/* WARNING: no sanitization or error-checking whatsoever */
for (size_t count = 0; count < sizeof val/sizeof *val; count++) {
sscanf(pos, "%2hhx", &val[count]);
pos += 2;
}
printf("0x");
for(size_t count = 0; count < sizeof val/sizeof *val; count++)
printf("%02x", val[count]);
printf("\n");
return 0;
}
As Al указал, что в случае нечетного числа шестнадцатеричных цифр в строке вам нужно убедиться, что вы префикс его с началом 0. Например, строка "f00f5"
будет ошибочно оценена как {0xf0, 0x0f, 0x05}
в приведенном выше примере, вместо правильного {0x0f, 0x00, 0xf5}
.
Немного изменил пример, чтобы ответить на комментарий @MassimoCallegari
Это - интерактивный пакет дизайна для разработки цифрового (т.е. программное обеспечение) цепи фазовой синхронизации (PLLs). Заполните форму и нажмите 'кнопку 'Submit '', и PLL будет разработан для Вас.
Это запустит Вас, но действительно необходимо понять, что основные принципы PLL разрабатывают достаточно хорошо для создания его сами для поиска и устранения неисправностей его позже - Это - область обработки цифровых сигналов, и в то время как не черная магия это, конечно, даст Вам шанс за Ваши деньги во время отладки.
- Adam
Имеют Matlab с Simulink? Существуют файлы демонстрации PLL, доступные в Matlab, Центральном здесь. Возможности генерации кода Matlab могли бы получить Вас оттуда к PLL, записанному в C.