add: %u, %p, %x to kprintf
This commit is contained in:
28
src/kprint/print_int_base.c
Normal file
28
src/kprint/print_int_base.c
Normal file
@ -0,0 +1,28 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "string.h"
|
||||
#include "terminal.h"
|
||||
|
||||
int print_int_base(int32_t number, const char *prefix, const char *base)
|
||||
{
|
||||
const int base_size = strlen(base);
|
||||
uint64_t div = 1;
|
||||
uint32_t tmp;
|
||||
int rv = 0;
|
||||
|
||||
if (prefix)
|
||||
terminal_writestring(prefix);
|
||||
if (number < 0) {
|
||||
rv += terminal_putchar('-');
|
||||
tmp = -1 * number;
|
||||
} else {
|
||||
tmp = number;
|
||||
}
|
||||
while (div <= tmp / base_size)
|
||||
div *= base_size;
|
||||
while (div > 0) {
|
||||
rv += terminal_putchar(base[tmp / div % base_size]);
|
||||
div /= base_size;
|
||||
}
|
||||
return rv;
|
||||
}
|
Reference in New Issue
Block a user