1
0
Fork 0

feat(printf): add # flag support for %b specifier

Closes #29
development
Marco Paland 7 years ago
parent 25958b9beb
commit 00f2525d1a

@ -175,6 +175,9 @@ static size_t _ntoa_format(out_fct_type out, char* buffer, size_t idx, size_t ma
if ((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { if ((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
buf[len++] = 'X'; buf[len++] = 'X';
} }
if ((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
buf[len++] = 'b';
}
if (len < PRINTF_NTOA_BUFFER_SIZE) { if (len < PRINTF_NTOA_BUFFER_SIZE) {
buf[len++] = '0'; buf[len++] = '0';
} }
@ -535,7 +538,6 @@ static int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const
} }
else if (*format == 'b') { else if (*format == 'b') {
base = 2U; base = 2U;
flags &= ~FLAGS_HASH; // no hash for bin format
} }
else { else {
base = 10U; base = 10U;

@ -352,6 +352,10 @@ TEST_CASE("# flag", "[]" ) {
test::sprintf(buffer, "%#.0x", 0); test::sprintf(buffer, "%#.0x", 0);
REQUIRE(!strcmp(buffer, "")); REQUIRE(!strcmp(buffer, ""));
test::sprintf(buffer, "%#.8x", 0x614e);
REQUIRE(!strcmp(buffer, "0x0000614e"));
test::sprintf(buffer,"%#b", 6);
REQUIRE(!strcmp(buffer, "0b110"));
} }

Loading…
Cancel
Save