![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Binary Native Endianness GeneratorsBoost , Spirit 2.5.2 , Binary Generators
|
Имя |
---|
|
|
boost::spirit::dword //
alias: boost::spirit::karma::dword |
|
boost::spirit::bin_float //
alias: boost::spirit::karma::bin_float |
boost::spirit::bin_double //
alias: boost::spirit::karma::bin_double |
![]() | Note |
---|---|
Генераторы |
Notation
b
Один байт (8 бит двоичного значения) или Ленивый аргумент который оценивается до одного байта
w
16-битное двоичное значение или ленивый аргумент, оценивающий до 16-битного двоичного значения. Это значение всегда интерпретируется с использованием родной эндианности.
dw
32-битное двоичное значение или ленивый аргумент , который оценивает до 32-битного двоичного значения. Это значение всегда интерпретируется с использованием родной эндианности.
qw
64-битное двоичное значение или Lazy Argument, которое оценивается до 64-битного двоичного значения. Это значение всегда интерпретируется с использованием родной эндианности.
f
Поплавковое двоичное значение или Ленивый аргумент, который оценивает поплавковое двоичное значение. Это значение всегда интерпретируется с использованием родной эндианности.
d
Двойное двоичное значение или Ленивый аргумент, который оценивает двойное двоичное значение. Это значение всегда интерпретируется с использованием родной эндианности.
Семантика выражения определяется только там, где она отличается от или не определена в PrimitiveGenerator
.
Выражение |
Описание |
---|---|
byte_ | |
word | |
dword | |
| Выведите двоичное представление наименее значимых 64 битов обязательного атрибута в нативном эндианном представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
bin_float | Выведите двоичное представление обязательного флоат-атрибута в родном эндиан-представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
bin_double | |
| |
word(w) | Выведите двоичное представление наименее значимых 16 битов непосредственного параметра в нативном эндианном представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
dword(dw) | Выведите двоичное представление наименее значимых 32 битов непосредственного параметра в нативном эндианном представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
qword(qw) | Выведите двоичное представление наименее значимых 64 битов непосредственного параметра в нативном эндианном представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
bin_float(f) | Выведите двоичное представление непосредственного поплавкового параметра в нативном эндианном представлении. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке). |
bin_double(d) |
Выражение |
Атрибут |
---|---|
byte_ | boost::uint_least8_t , атрибут
является обязательным (в противном случае компиляция потерпит неудачу)
|
word | |
dword | boost::uint_least32_t , атрибут
является обязательным (в противном случае компиляция потерпит неудачу)
|
| boost::uint_least64_t , атрибут
является обязательным (в противном случае компиляция потерпит неудачу)
|
bin_float | |
bin_double | double , атрибут
является обязательным (в противном случае компиляция потерпит неудачу)
|
| |
word(w) | |
dword(dw) | |
qword(qw) | |
bin_float(f) | |
bin_double(d) | |
![]() | Note |
---|---|
В дополнение к их обычному атрибуту типа |
O(N), где N - число байтов, излучаемых двоичным генератором
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделе Основные примеры. |
Некоторые включают:
#include <boost/spirit/include/karma.hpp> #include <boost/spirit/include/support_utree.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <iostream> #include <string>
Некоторые используют декларации:
using boost::spirit::karma::byte_; using boost::spirit::karma::word; using boost::spirit::karma::dword; using boost::spirit::karma::qword;
Базовое использование нативных бинарных генераторов с некоторыми результатами для небольших эндиан-платформ:
test_binary_generator("\x01", 1, byte_(0x01)); test_binary_generator("\x01\x02", 2, word(0x0201)); test_binary_generator("\x01\x02\x03\x04", 4, dword(0x04030201)); test_binary_generator("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword(0x0807060504030201LL)); test_binary_generator_attr("\x01", 1, byte_, 0x01); test_binary_generator_attr("\x01\x02", 2, word, 0x0201); test_binary_generator_attr("\x01\x02\x03\x04", 4, dword, 0x04030201); test_binary_generator_attr("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword, 0x0807060504030201LL);
Базовое использование нативных бинарных генераторов с некоторыми результатами для больших эндиан-платформ:
test_binary_generator("\x01", 1, byte_(0x01)); test_binary_generator("\x02\x01", 2, word(0x0201)); test_binary_generator("\x04\x03\x02\x01", 4, dword(0x04030201)); test_binary_generator("\x08\x07\x06\x05\x04\x03\x02\x01", 8, qword(0x0807060504030201LL)); test_binary_generator_attr("\x01", 1, byte_, 0x01); test_binary_generator_attr("\x02\x01", 2, word, 0x0201); test_binary_generator_attr("\x04\x03\x02\x01", 4, dword, 0x04030201); test_binary_generator_attr("\x08\x07\x06\x05\x04\x03\x02\x01", 8, qword, 0x0807060504030201LL);
Статья Binary Native Endianness Generators раздела Spirit 2.5.2 Binary Generators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Binary Generators ::
реклама |