Skip to content

Instantly share code, notes, and snippets.

@mpan-pl
Last active August 16, 2018 20:03
Show Gist options
  • Save mpan-pl/ce0af64cb918f2153c69a41c09052c16 to your computer and use it in GitHub Desktop.
Save mpan-pl/ce0af64cb918f2153c69a41c09052c16 to your computer and use it in GitHub Desktop.
A C macro for converting 8-bit binary representations into actual values
/*
Signing key: 7C848198AE93D3BB
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
*/
// Copyright © 2018 mpan; <https://mpan.pl/>; CC0 1.0 (THIS FILE!)
// This code should be compatible with C11, except for comments which contain
// the grave accent character (U+0060). The whole code is compatible with POSIX.
// Currently tested on: GCC 8.2.0 (from C11 down to C89, after removing
// // comments; also GNU extensions), clang 6.0.1, tcc 0.9.27 and icc 18.0.
// Thanks to alyptik (jp) of <https://alyp.tk/> for help in testing.
/**
* Generates an unsigned integer value from its binary representation.
*
* `BIN8` produces an expression that evaluates to an unsigned integer
* from range [`0`, `255`]. The value is equal to the binary number described
* by @p digits. The output is a constant expression.
*
* @par Format
* @parblock @anchor Format
* `BIN8` accepts three formats:
*
* - All 8 digits together,
* - Two 4-digit groups,
* - Each digit separately.
*
* Digits are either `0` or `1` and all 8 of them need to be supplied.
* @endparblock
*
* @par Examples
* @parblock
* Producing an 8-bit value from 8 whitespace-separated digits:
*
* printf("%x = %x\n", 0xA5, BIN8(1 0 1 0 0 1 0 1));
*
* Achieving the same output, using two 4-digit groups and a single 8-bit group:
*
* printf("%x = %x\n", 0xA5, BIN8(1010 0101));
* printf("%x = %x\n", 0xA5, BIN8(10100101));
*
* @endparblock
*
* @param [in] digits
* The binary digits to be converted, in one of the formats mentioned
* above.
*
* @return
* A constant expression evaluating to the number represented by @p digits.
*
* @author mpan
*/
#define BIN8(digits) BIN8_COLLECT_PXPAND(BIN8_EAT8(digits))
/**@cond IMPLDETAILS*/
#define BIN8_COLLECT_PXPAND(digits) BIN8_COLLECT(digits)
#define BIN8_COLLECT(b7, b6, b5, b4, b3, b2, b1, b0)\
(((b7) << 7) | ((b6) << 6) | ((b5) << 5) | ((b4) << 4) | ((b3) << 3)\
| ((b2) << 2) | ((b1) << 1) | (b0))
#define BIN8_EAT8(digits) BIN8_EAT8_##digits )
#define BIN8_EAT8_0 0, BIN8_EAT7(
#define BIN8_EAT8_1 1, BIN8_EAT7(
#define BIN8_EAT7(digits) BIN8_EAT7_##digits )
#define BIN8_EAT7_0 0, BIN8_EAT6(
#define BIN8_EAT7_1 1, BIN8_EAT6(
#define BIN8_EAT6(digits) BIN8_EAT6_##digits )
#define BIN8_EAT6_0 0, BIN8_EAT5(
#define BIN8_EAT6_1 1, BIN8_EAT5(
#define BIN8_EAT5(digits) BIN8_EAT5_##digits )
#define BIN8_EAT5_0 0, BIN8_EAT4(
#define BIN8_EAT5_1 1, BIN8_EAT4(
#define BIN8_EAT4(digits) BIN8_EAT4_##digits )
#define BIN8_EAT4_0 0, BIN8_EAT3(
#define BIN8_EAT4_1 1, BIN8_EAT3(
#define BIN8_EAT3(digits) BIN8_EAT3_##digits )
#define BIN8_EAT3_0 0, BIN8_EAT2(
#define BIN8_EAT3_1 1, BIN8_EAT2(
#define BIN8_EAT2(digits) BIN8_EAT2_##digits )
#define BIN8_EAT2_0 0, BIN8_EAT1(
#define BIN8_EAT2_1 1, BIN8_EAT1(
#define BIN8_EAT1(digits) BIN8_EAT1_##digits )
#define BIN8_EAT1_0 0 BIN8_FIN(
#define BIN8_EAT1_1 1 BIN8_FIN(
#define BIN8_FIN()
#define BIN8_EAT8_0000 0, 0, 0, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_0001 0, 0, 0, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_0010 0, 0, 1, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_0011 0, 0, 1, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_0100 0, 1, 0, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_0101 0, 1, 0, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_0110 0, 1, 1, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_0111 0, 1, 1, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_1000 1, 0, 0, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_1001 1, 0, 0, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_1010 1, 0, 1, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_1011 1, 0, 1, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_1100 1, 1, 0, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_1101 1, 1, 0, 1, BIN8_EATQUAD4(
#define BIN8_EAT8_1110 1, 1, 1, 0, BIN8_EATQUAD4(
#define BIN8_EAT8_1111 1, 1, 1, 1, BIN8_EATQUAD4(
#define BIN8_EATQUAD4(digits) BIN8_EATQUAD4_##digits )
#define BIN8_EATQUAD4_0000 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EATQUAD4_0001 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EATQUAD4_0010 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EATQUAD4_0011 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EATQUAD4_0100 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EATQUAD4_0101 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EATQUAD4_0110 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EATQUAD4_0111 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EATQUAD4_1000 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EATQUAD4_1001 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EATQUAD4_1010 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EATQUAD4_1011 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EATQUAD4_1100 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EATQUAD4_1101 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EATQUAD4_1110 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EATQUAD4_1111 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00000000 0, 0, 0, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00000001 0, 0, 0, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00000010 0, 0, 0, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00000011 0, 0, 0, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00000100 0, 0, 0, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00000101 0, 0, 0, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00000110 0, 0, 0, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00000111 0, 0, 0, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00001000 0, 0, 0, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00001001 0, 0, 0, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00001010 0, 0, 0, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00001011 0, 0, 0, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00001100 0, 0, 0, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00001101 0, 0, 0, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00001110 0, 0, 0, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00001111 0, 0, 0, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00010000 0, 0, 0, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00010001 0, 0, 0, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00010010 0, 0, 0, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00010011 0, 0, 0, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00010100 0, 0, 0, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00010101 0, 0, 0, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00010110 0, 0, 0, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00010111 0, 0, 0, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00011000 0, 0, 0, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00011001 0, 0, 0, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00011010 0, 0, 0, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00011011 0, 0, 0, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00011100 0, 0, 0, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00011101 0, 0, 0, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00011110 0, 0, 0, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00011111 0, 0, 0, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00100000 0, 0, 1, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00100001 0, 0, 1, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00100010 0, 0, 1, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00100011 0, 0, 1, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00100100 0, 0, 1, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00100101 0, 0, 1, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00100110 0, 0, 1, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00100111 0, 0, 1, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00101000 0, 0, 1, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00101001 0, 0, 1, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00101010 0, 0, 1, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00101011 0, 0, 1, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00101100 0, 0, 1, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00101101 0, 0, 1, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00101110 0, 0, 1, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00101111 0, 0, 1, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00110000 0, 0, 1, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00110001 0, 0, 1, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00110010 0, 0, 1, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00110011 0, 0, 1, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00110100 0, 0, 1, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00110101 0, 0, 1, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00110110 0, 0, 1, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00110111 0, 0, 1, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00111000 0, 0, 1, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00111001 0, 0, 1, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00111010 0, 0, 1, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00111011 0, 0, 1, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_00111100 0, 0, 1, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_00111101 0, 0, 1, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_00111110 0, 0, 1, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_00111111 0, 0, 1, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01000000 0, 1, 0, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01000001 0, 1, 0, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01000010 0, 1, 0, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01000011 0, 1, 0, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01000100 0, 1, 0, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01000101 0, 1, 0, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01000110 0, 1, 0, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01000111 0, 1, 0, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01001000 0, 1, 0, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01001001 0, 1, 0, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01001010 0, 1, 0, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01001011 0, 1, 0, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01001100 0, 1, 0, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01001101 0, 1, 0, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01001110 0, 1, 0, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01001111 0, 1, 0, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01010000 0, 1, 0, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01010001 0, 1, 0, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01010010 0, 1, 0, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01010011 0, 1, 0, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01010100 0, 1, 0, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01010101 0, 1, 0, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01010110 0, 1, 0, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01010111 0, 1, 0, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01011000 0, 1, 0, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01011001 0, 1, 0, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01011010 0, 1, 0, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01011011 0, 1, 0, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01011100 0, 1, 0, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01011101 0, 1, 0, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01011110 0, 1, 0, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01011111 0, 1, 0, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01100000 0, 1, 1, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01100001 0, 1, 1, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01100010 0, 1, 1, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01100011 0, 1, 1, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01100100 0, 1, 1, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01100101 0, 1, 1, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01100110 0, 1, 1, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01100111 0, 1, 1, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01101000 0, 1, 1, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01101001 0, 1, 1, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01101010 0, 1, 1, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01101011 0, 1, 1, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01101100 0, 1, 1, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01101101 0, 1, 1, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01101110 0, 1, 1, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01101111 0, 1, 1, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01110000 0, 1, 1, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01110001 0, 1, 1, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01110010 0, 1, 1, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01110011 0, 1, 1, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01110100 0, 1, 1, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01110101 0, 1, 1, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01110110 0, 1, 1, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01110111 0, 1, 1, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01111000 0, 1, 1, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01111001 0, 1, 1, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01111010 0, 1, 1, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01111011 0, 1, 1, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_01111100 0, 1, 1, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_01111101 0, 1, 1, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_01111110 0, 1, 1, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_01111111 0, 1, 1, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10000000 1, 0, 0, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10000001 1, 0, 0, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10000010 1, 0, 0, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10000011 1, 0, 0, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10000100 1, 0, 0, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10000101 1, 0, 0, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10000110 1, 0, 0, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10000111 1, 0, 0, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10001000 1, 0, 0, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10001001 1, 0, 0, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10001010 1, 0, 0, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10001011 1, 0, 0, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10001100 1, 0, 0, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10001101 1, 0, 0, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10001110 1, 0, 0, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10001111 1, 0, 0, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10010000 1, 0, 0, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10010001 1, 0, 0, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10010010 1, 0, 0, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10010011 1, 0, 0, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10010100 1, 0, 0, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10010101 1, 0, 0, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10010110 1, 0, 0, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10010111 1, 0, 0, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10011000 1, 0, 0, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10011001 1, 0, 0, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10011010 1, 0, 0, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10011011 1, 0, 0, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10011100 1, 0, 0, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10011101 1, 0, 0, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10011110 1, 0, 0, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10011111 1, 0, 0, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10100000 1, 0, 1, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10100001 1, 0, 1, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10100010 1, 0, 1, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10100011 1, 0, 1, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10100100 1, 0, 1, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10100101 1, 0, 1, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10100110 1, 0, 1, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10100111 1, 0, 1, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10101000 1, 0, 1, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10101001 1, 0, 1, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10101010 1, 0, 1, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10101011 1, 0, 1, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10101100 1, 0, 1, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10101101 1, 0, 1, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10101110 1, 0, 1, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10101111 1, 0, 1, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10110000 1, 0, 1, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10110001 1, 0, 1, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10110010 1, 0, 1, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10110011 1, 0, 1, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10110100 1, 0, 1, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10110101 1, 0, 1, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10110110 1, 0, 1, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10110111 1, 0, 1, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10111000 1, 0, 1, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10111001 1, 0, 1, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10111010 1, 0, 1, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10111011 1, 0, 1, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_10111100 1, 0, 1, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_10111101 1, 0, 1, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_10111110 1, 0, 1, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_10111111 1, 0, 1, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11000000 1, 1, 0, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11000001 1, 1, 0, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11000010 1, 1, 0, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11000011 1, 1, 0, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11000100 1, 1, 0, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11000101 1, 1, 0, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11000110 1, 1, 0, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11000111 1, 1, 0, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11001000 1, 1, 0, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11001001 1, 1, 0, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11001010 1, 1, 0, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11001011 1, 1, 0, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11001100 1, 1, 0, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11001101 1, 1, 0, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11001110 1, 1, 0, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11001111 1, 1, 0, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11010000 1, 1, 0, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11010001 1, 1, 0, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11010010 1, 1, 0, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11010011 1, 1, 0, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11010100 1, 1, 0, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11010101 1, 1, 0, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11010110 1, 1, 0, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11010111 1, 1, 0, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11011000 1, 1, 0, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11011001 1, 1, 0, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11011010 1, 1, 0, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11011011 1, 1, 0, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11011100 1, 1, 0, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11011101 1, 1, 0, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11011110 1, 1, 0, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11011111 1, 1, 0, 1, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11100000 1, 1, 1, 0, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11100001 1, 1, 1, 0, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11100010 1, 1, 1, 0, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11100011 1, 1, 1, 0, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11100100 1, 1, 1, 0, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11100101 1, 1, 1, 0, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11100110 1, 1, 1, 0, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11100111 1, 1, 1, 0, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11101000 1, 1, 1, 0, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11101001 1, 1, 1, 0, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11101010 1, 1, 1, 0, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11101011 1, 1, 1, 0, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11101100 1, 1, 1, 0, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11101101 1, 1, 1, 0, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11101110 1, 1, 1, 0, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11101111 1, 1, 1, 0, 1, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11110000 1, 1, 1, 1, 0, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11110001 1, 1, 1, 1, 0, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11110010 1, 1, 1, 1, 0, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11110011 1, 1, 1, 1, 0, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11110100 1, 1, 1, 1, 0, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11110101 1, 1, 1, 1, 0, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11110110 1, 1, 1, 1, 0, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11110111 1, 1, 1, 1, 0, 1, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11111000 1, 1, 1, 1, 1, 0, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11111001 1, 1, 1, 1, 1, 0, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11111010 1, 1, 1, 1, 1, 0, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11111011 1, 1, 1, 1, 1, 0, 1, 1 BIN8_FIN(
#define BIN8_EAT8_11111100 1, 1, 1, 1, 1, 1, 0, 0 BIN8_FIN(
#define BIN8_EAT8_11111101 1, 1, 1, 1, 1, 1, 0, 1 BIN8_FIN(
#define BIN8_EAT8_11111110 1, 1, 1, 1, 1, 1, 1, 0 BIN8_FIN(
#define BIN8_EAT8_11111111 1, 1, 1, 1, 1, 1, 1, 1 BIN8_FIN(
/**@endcond*/
/*
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEERGuTZCqWmv5+0VD7fISBmK6T07sFAlt12BAACgkQfISBmK6T
07vBPAf+I+La9MkzVXIXgJvg5J+IUHRpv5Ry4p4aw68V2oHV+v5CpPDMU25Wag/p
VVk1+OZ+cym0HrCLpwNWoTwi3Cdr6YtZqHLg2vEuCAOPfvfLpIwJeZjD2AF8u6jg
riJSv1z2NhNkIj/FjXfD5RM5j5Z2O6pJ+kcaPZjP/aj05sJn5TEs12YU2bILFw5S
sW9TCo1uwlVvwbD076URaj23ag5i4ETse6KhPkYehB5Qy8otXn8v/PwYjZKJx+ur
xZCPlrr7eedqfX6MDE2nOMnKibnclYcdrUd+btDutH1gyz9p+A+eBmi4n0xOUQ1F
It9Mz8SDHuqYJZ2lrvRLXXZzr8BWkw==
=58+p
-----END PGP SIGNATURE-----
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment