#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <limits.h>
static size_t itohexa_helper(char *dest, unsigned x) {
size_t ret = x >= 16 ? itohexa_helper(dest, x / 16) : 0;
dest[ret] = "0123456789abcdef"[x & 15];
return ret + 1;
}
size_t itohexa(char *dest, unsigned x) {
size_t ret = itohexa_helper(dest, x);
dest[ret] = '\0';
return ret;
}
int main(void) {
char array[8];
uint16_t temperature = 0x1f11;
itohexa(array, temperature);
itohexa(array, 0);
itohexa(array, 0x1234567);
itohexa(array, UINT_MAX & 0xFFFFFFF);
}
I2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8bGltaXRzLmg+CgpzdGF0aWMgc2l6ZV90IGl0b2hleGFfaGVscGVyKGNoYXIgKmRlc3QsIHVuc2lnbmVkIHgpIHsKICBzaXplX3QgcmV0ID0gIHggPj0gMTYgPyBpdG9oZXhhX2hlbHBlcihkZXN0LCB4IC8gMTYpIDogMDsKICBkZXN0W3JldF0gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbeCAmIDE1XTsKICByZXR1cm4gcmV0ICsgMTsKfQoKc2l6ZV90IGl0b2hleGEoY2hhciAqZGVzdCwgdW5zaWduZWQgeCkgewogIHNpemVfdCByZXQgPSBpdG9oZXhhX2hlbHBlcihkZXN0LCB4KTsKICBkZXN0W3JldF0gPSAnXDAnOwogIHJldHVybiByZXQ7Cn0KCmludCBtYWluKHZvaWQpIHsKICBjaGFyIGFycmF5WzhdOwogIHVpbnQxNl90IHRlbXBlcmF0dXJlID0gMHgxZjExOwogIGl0b2hleGEoYXJyYXksIHRlbXBlcmF0dXJlKTsKICBwdXRzKGFycmF5KTsKICBpdG9oZXhhKGFycmF5LCAwKTsKICBwdXRzKGFycmF5KTsKICBpdG9oZXhhKGFycmF5LCAweDEyMzQ1NjcpOwogIHB1dHMoYXJyYXkpOwogIGl0b2hleGEoYXJyYXksIFVJTlRfTUFYICYgMHhGRkZGRkZGKTsKICBwdXRzKGFycmF5KTsKfQ==