From 813f372dc4ff7850fbfe687faac6c8976226f327 Mon Sep 17 00:00:00 2001 From: Amelia Coutard Date: Sun, 26 Mar 2023 04:14:56 +0200 Subject: [PATCH] Made ints print in base 10 --- kernel/src/serial.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/kernel/src/serial.cpp b/kernel/src/serial.cpp index bd70246..abc05e8 100644 --- a/kernel/src/serial.cpp +++ b/kernel/src/serial.cpp @@ -60,17 +60,18 @@ void os::print_formatted(const char* format, const char* val) { } void os::print_formatted(const char* format, std::uint64_t val) { os::assert(format[0] == '}', "Format string unsupported. TODO."); - bool printed = false; - os::print("0x"); - for (int i = 60; i >= 0; i -= 4) { - const int v = (val >> i) & 0xF; - if (printed || v != 0) { - os::printc(v < 10 ? v + '0' : v - 10 + 'a'); - printed = true; - } + char data[20]; + char* curr = data + 19; + while (val != 0) { + *curr = val % 10 + '0'; + val /= 10; + curr--; } - if (!printed) { + curr++; + if (curr == data + 20) { os::printc('0'); + } else while (curr < data + 20) { + os::printc(*curr++); } } void os::print_formatted(const char* format, std::int64_t val) { -- 2.47.0