Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2013. The current version is 1.89.0.
Binary native endian parsers are designed to parse binary byte streams that are laid out in the native endianness of the target architecture.
// forwards to <boost/spirit/home/qi/binary.hpp> #include <boost/spirit/include/qi_binary.hpp>
Also, see Include Structure.
|
Name |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
![]() |
Note |
|---|---|
|
Notation
bA single byte (8 bit binary value) or a Lazy Argument that evaluates to a single byte. This value is always in native endian.
wA 16 bit binary value or a Lazy Argument that evaluates to a 16 bit binary value. This value is always in native endian.
dwA 32 bit binary value or a Lazy Argument that evaluates to a 32 bit binary value. This value is always in native endian.
qwA 64 bit binary value or a Lazy Argument that evaluates to a 64 bit binary value. This value is always in native endian.
fA float binary value or a Lazy Argument that evaluates to a float binary value. This value is always in native endian.
dA double binary value or a Lazy Argument that evaluates to a double binary value. This value is always in native endian.
Semantics of an expression is defined only where it differs from, or
is not defined in PrimitiveParser.
|
Expression |
Description |
|---|---|
|
|
Matches any 8 bit native endian binary. |
|
|
Matches any 16 bit native endian binary. |
|
|
Matches any 32 bit native endian binary. |
|
|
Matches any 64 bit native endian binary. |
|
|
Matches any float native endian binary. |
|
|
Matches any double native endian binary. |
|
|
Matches an exact 8 bit native endian binary. |
|
|
Matches an exact 16 bit native endian binary. |
|
|
Matches an exact 32 bit native endian binary. |
|
|
Matches an exact 64 bit native endian binary. |
|
|
Matches an exact float native endian binary. |
|
|
Matches an exact double native endian binary. |
|
Expression |
Attribute |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
O(N), where N is the number of bytes parsed
![]() |
Note |
|---|---|
The test harness for the example(s) below is presented in the Basics Examples section. |
Using declarations and variables:
using boost::spirit::qi::byte_; using boost::spirit::qi::word; using boost::spirit::qi::dword; using boost::spirit::qi::qword; boost::uint8_t uc; boost::uint16_t us; boost::uint32_t ui; boost::uint64_t ul;
Basic usage of the native binary parsers for little endian platforms:
test_parser_attr("\x01", byte_, uc); assert(uc == 0x01); test_parser_attr("\x01\x02", word, us); assert(us == 0x0201); test_parser_attr("\x01\x02\x03\x04", dword, ui); assert(ui == 0x04030201); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul); assert(ul == 0x0807060504030201LL); test_parser("\x01", byte_(0x01)); test_parser("\x01\x02", word(0x0201)); test_parser("\x01\x02\x03\x04", dword(0x04030201)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", qword(0x0807060504030201LL));
Basic usage of the native binary parsers for big endian platforms:
test_parser_attr("\x01", byte_, uc); assert(uc == 0x01); test_parser_attr("\x01\x02", word, us); assert(us == 0x0102); test_parser_attr("\x01\x02\x03\x04", dword, ui); assert(ui == 0x01020304); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul); assert(0x0102030405060708LL); test_parser("\x01", byte_(0x01)); test_parser("\x01\x02", word(0x0102)); test_parser("\x01\x02\x03\x04", dword(0x01020304)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", qword(0x0102030405060708LL));