Поскольку в строке используется шестнадцатеричный код, это довольно легко сделать с помощью операторов сдвига и битов.
Получить 4 старших бита из значения можно следующим образом:
id >> 28
Преобразование этого в цифру просто означает добавление к нему символа '0', например:
'0' + (id >> 28)
Однако, поскольку A, B, C, ... не следуют сразу за символом 9, мы должны выполнить дополнительную проверку, что-то вроде:
if (c > '9') c = c - '9' - 1 'A'
Если нам нужны следующие 4 бита, мы должны сдвинуть только 24 бита, но тогда у нас все еще остаются старшие 4 бита, поэтому мы должны их замаскировать следующим образом:
(id >> 24) & 0xf
Если мы добавим это в вашу функцию, мы получим это:
char convert (int value)
{
char c = value + '0';
if (c > '9') c = c - '9' - 1 + 'A';
return c;
}
void main()
{
long id = 53431453;
char buffer[20];
buffer[0] = convert(id >> 28);
buffer[1] = convert((id >> 24) & 0xf);
buffer[2] = convert((id >> 20) & 0xf);
buffer[3] = convert((id >> 16) & 0xf);
buffer[4] = convert((id >> 12) & 0xf);
buffer[5] = convert((id >> 8) & 0xf);
buffer[6] = convert((id >> 4) & 0xf);
buffer[7] = convert((id >> 0) & 0xf);
buffer[8] = '\0';
}
Теперь настройте это, чтобы добавить косые черты между ними, дополнительные нули в начале, ...
EDIT:
Я знаю, что это не за один шаг, но его лучше расширить, если позже вы захотите поменять местами косые черты, ...