print: add support for uint64 bits

This commit is contained in:
King Kévin 2017-12-13 14:16:28 +01:00
parent 8542914426
commit f5355fe75a
2 changed files with 8 additions and 4 deletions

View File

@ -201,8 +201,8 @@ static size_t print_hex(char** str, size_t* size, uint64_t hex, uint32_t padding
* @param[in] prefix if 0b prefix should be printed
* @return number of characters printed
**/
static size_t print_bits(char** str, size_t* size, uint32_t u, uint32_t padding, bool prefix) {
char bits[32] = {0}; // construct the bit string in reverse order
static size_t print_bits(char** str, size_t* size, uint64_t u, uint32_t padding, bool prefix) {
char bits[64] = {0}; // construct the bit string in reverse order
uint8_t digits = 0; // to count the number of digits
size_t length = 0; // number of characters printed
do {
@ -307,9 +307,12 @@ static size_t vsnprintf(char** str, size_t* size, const char *format, va_list va
case 'H': // for uint64_t upcase hexadecimal
print_printed(&length, print_hex(str, size, va_arg(va,uint64_t), padding, sign, true));
break;
case 'b': // for bits
case 'b': // for uint8_t, uint16_t, uint32_t bits
print_printed(&length, print_bits(str, size, va_arg(va,uint32_t), padding, sign));
break;
case 'B': // for uint64_t bits
print_printed(&length, print_bits(str, size, va_arg(va,uint64_t), padding, sign));
break;
case 's': // for strings
print_printed(&length, print_string(str, size, va_arg(va,char*)));
break;

View File

@ -25,7 +25,8 @@
* - X for uint64_t lower case hexadecimal
* - h for up to uint32_t upper case hexadecimal
* - H for uint64_t upper case hexadecimal
* - b for bits up to uint32_t
* - b for up to uint32_t bits
* - B for uint64_t bits
* @file print.h
* @author King Kévin <kingkevin@cuvoodoo.info>
* @date 2017