From 218902038f39a50b0ba0fd15fd1ecf4b99369f65 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 19 Aug 2016 00:45:56 -0400 Subject: [PATCH] Do not include leading 0's in binary strings --- runtime.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/runtime.c b/runtime.c index 619914a7..e67eddc9 100644 --- a/runtime.c +++ b/runtime.c @@ -1373,13 +1373,23 @@ object Cyc_length(void *data, object l) char *int_to_binary(char *b, int x) { - b[0] = '\0'; - - int z; - for (z = 65536; z > 0; z >>= 1) { - strcat(b, ((x & z) == z) ? "1" : "0"); + unsigned int i = 0x80000000, leading_zeros = 1; + if (x == 0) { + *b++ = '0'; + *b = '\0'; + return b; } + while (i){ + if (x & i) { + *b++ = '1'; + leading_zeros = 0; + } else if (!leading_zeros) { + *b++ = '0'; + } + i >>= 1; + } + *b = '\0'; return b; }