Поклонники stdlib ругаются на мой стиль
Необходимо переоформить внешний вид так - чтобы был понятен смысл функции.
#include "stdint.h"
char* hex_char(char* tail_txt, uintptr_t value)
{
unsigned int tmp;
int nc = 0x577F << ((sizeof(nc)-2)*8);
*tail_txt = 0;
do{
do{
tmp = value & 0x0Fu;
tmp -= 10;
tmp -= tmp >> ((sizeof(tmp)*8)-3);//-?:7
tmp += 10 + 7 + '0';
*(--tail_txt) = tmp;
nc <<= 1;
value >>= 4;
}while (value );
}while (nc < 0);
*(volatile char*)--tail_txt = 'x';
*(volatile char*)--tail_txt = '0';
return tail_txt;
};
Функция должна корректно работать на 16-32-64битных системах. https://godbolt.org/z/bnfEbaxa1
На данный момент функция принимает указатель на конец буфера и число без знака способное вместить адрес. Выдаёт указатель на первый символ строки с завершающим нулём. Результат - строка в hex формате. Очень важным условием является то, что 0xF должен быть дополнен до 0x0F, 0x12F -> 0x012F, 0x1234F -> 0x0001234F, 0x12345678F -> 0x000000012345678F. Иначе анализаторы строки сойдут сума.
Вот, нужно переоформить функцию, дописать комментарии, поменять имена переменных, да что угодно. Изменить так чтобы пояснительной записки не требовалось.