summaryrefslogtreecommitdiff
path: root/README.md
blob: 3b99bcd0281f68a0d5dfed6a76cce2bda9730260 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# binary

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.

## BIN

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`).

## BINSTRLEN

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];

## binstr()

	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`.