From b53590fe3a04e3e7c5c8dd249e02c2189f341d55 Mon Sep 17 00:00:00 2001 From: garenchan <1412950785@qq.com> Date: Wed, 28 Nov 2018 19:18:39 +0800 Subject: [PATCH] Fix a bug in hex_to_ascii(). --- 22-malloc/libc/string.c | 8 ++------ 23-fixes/libc/string.c | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/22-malloc/libc/string.c b/22-malloc/libc/string.c index 9b8a6d3..eb587c2 100644 --- a/22-malloc/libc/string.c +++ b/22-malloc/libc/string.c @@ -25,17 +25,13 @@ void hex_to_ascii(int n, char str[]) { s32 tmp; int i; - for (i = 28; i > 0; i -= 4) { + for (i = 28; i >= 0; i -= 4) { tmp = (n >> i) & 0xF; if (tmp == 0 && zeros == 0) continue; zeros = 1; - if (tmp > 0xA) append(str, tmp - 0xA + 'a'); + if (tmp >= 0xA) append(str, tmp - 0xA + 'a'); else append(str, tmp + '0'); } - - tmp = n & 0xF; - if (tmp >= 0xA) append(str, tmp - 0xA + 'a'); - else append(str, tmp + '0'); } /* K&R */ diff --git a/23-fixes/libc/string.c b/23-fixes/libc/string.c index 688f4a5..9c2f399 100644 --- a/23-fixes/libc/string.c +++ b/23-fixes/libc/string.c @@ -25,17 +25,13 @@ void hex_to_ascii(int n, char str[]) { int32_t tmp; int i; - for (i = 28; i > 0; i -= 4) { + for (i = 28; i >= 0; i -= 4) { tmp = (n >> i) & 0xF; if (tmp == 0 && zeros == 0) continue; zeros = 1; - if (tmp > 0xA) append(str, tmp - 0xA + 'a'); + if (tmp >= 0xA) append(str, tmp - 0xA + 'a'); else append(str, tmp + '0'); } - - tmp = n & 0xF; - if (tmp >= 0xA) append(str, tmp - 0xA + 'a'); - else append(str, tmp + '0'); } /* K&R */