#include #include "panic.h" #include void memcpy(void *from, void *to, uint32_t n) { panic("Not implemented (memcpy)."); } void u32_dec(uint32_t n, uint8_t *b) { if (!n) { *(uint16_t *)b = '0'; return; } bool zero = false; for (uint32_t m = 1000000000; m; m /= 10) { uint8_t d = (n / m) % 10; if (zero) *(b++) = d + '0'; else if (d) { zero = true; *(b++) = d + '0'; } } *b = 0; } void u16_dec(uint16_t n, uint8_t *b) { if (!n) { *(uint16_t *)b = '0'; return; } bool zero = false; for (uint32_t m = 10000; m; m /= 10) { uint8_t d = (n / m) % 10; if (zero) *(b++) = d + '0'; else if (d) { zero = true; *(b++) = d + '0'; } } *b = 0; } void u8_dec(uint8_t n, uint8_t *b) { if (!n) { *(uint16_t *)b = '0'; return; } bool zero = false; for (uint32_t m = 100; m; m /= 10) { uint8_t d = (n / m) % 10; if (zero) *(b++) = d + '0'; else if (d) { zero = true; *(b++) = d + '0'; } } *b = 0; } void u32_hex(uint32_t n, uint8_t *b) { uint8_t m = 28; while (1) { uint8_t d = (n >> m) & 0xf; *(b++) = d >= 10 ? 'a' + d - 10 : '0' + d; if (!m) { *b = 0; return; } m -= 4; } } void u16_hex(uint16_t n, uint8_t *b) { uint8_t m = 12; while (1) { uint8_t d = (n >> m) & 0xf; *(b++) = d >= 10 ? 'a' + d - 10 : '0' + d; if (!m) { *b = 0; return; } m -= 4; } } void u8_hex(uint8_t n, uint8_t *b) { uint8_t m = 4; while (1) { uint8_t d = (n >> m) & 0xf; *(b++) = d >= 10 ? 'a' + d - 10 : '0' + d; if (!m) { *b = 0; return; } m -= 4; } }