ref: 52b735b260281e9d907227a138d6aa57484018e0 binary/README.md -rw-r--r-- 1.3 KiB
52b735b2 — Jakob Kaivo add include guards 3 years ago


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.