a liblet for working with binary numbers in C
c8c21c5f — Jakob Kaivo 3 years ago
include sample program binhex
52b735b2 — Jakob Kaivo 3 years ago
add include guards
eb97a1d4 — Jakob Kaivo 3 years ago
remove redundant function binary()


browse  log 



You can also use your local clone with git send-email.


This is a liblet (a very small library consisting of one header file and one source file) for working with binary numbers in C.

The header file, binary.h, defines two macros for external use, BIN and BINSTRLEN. It also declares one function which is defined in the source file binary.c. Additional macros in binary.h which begin with BIN_ are implementation details and should not be considered part of the defined interface.


The macro BIN converts a binary literal number to a uintmax_t. For example:

uintmax_t n = BIN(1010);

This will result in the variable n having the value 0xa (the hex representation of the binary literal 1010).


The symbolic constant BINSTRLEN defines the length of a uintmax_t represented as a string of characters. Its primary use is for declaring an array large enough to hold the results of binstr() (see below):

char s[BINSTRLEN];


char *binstr(size_t n, char s[n], uintmax_t b);

This function converts the number b to its string representation in base 2. The least significant n - 1 bits are stored in the array s. The string will be null terminated.

#See Also

There is no inverse function of binstr() provided, as this can be fulfilled by calling strtoumax() with the third paramater (base) set to 2.