#include "header.h"

void int_to_hex_string(uint64_t value, char *out, uint8_t num_digits) {				// num_digits : number of digit of the output, ex 2 for 3FF (1023) -> FF
    for (uint8_t i = 0; i < num_digits; ++i) {
        uint8_t shift = (num_digits - 1 - i) * 4;
        out[i] = INT_TO_HEX_CHAR((value >> shift) & 0x0F);
    }
    out[num_digits] = '\0';
}

void uint16_to_string(uint16_t value, char buffer[17]) {
    // handle zero case
    if (value == 0) {
        buffer[0] = '0';
		return;
    }

	uint8_t size = -1;
	uint16_t copy = value;

	while (copy) {
		copy /= 10;
		size++;
	}

	while (value) {
		uint8_t digit = value % 10;
		buffer[size] = digit + '0';
		value /= 10;
		size--;
	}
}