Пользовательский размер байта?

Так, Вы знаете, как примитив символа типа имеет размер 1 байта? Как я сделал бы примитив с пользовательским размером? Таким образом как вместо в интервале с размером 4 байтов я делаю один с размером, позволяет, говорят 16. Существует ли способ сделать это? Существует ли путь вокруг этого?

6
задан 21 April 2010 в 01:45
поделиться

3 ответа

Обычно вы просто создаете структуру, представляющую интересующие вас данные. Если это 16 байтов данных, либо это совокупность нескольких более мелких типов, либо вы работаете над процессором, который имеет собственный 16-байтовый интегральный тип.

Если вы пытаетесь представить чрезвычайно большие числа, вам может потребоваться специальная библиотека, которая обрабатывает числа произвольного размера.

5
ответ дан 10 December 2019 в 00:35
поделиться

Если вы хотите создать новый тип, введите его. Если вы хотите, чтобы его размер составлял 16 байтов, введите структуру, содержащую 16 байтов данных-членов внутри нее. Просто помните, что довольно часто компиляторы будут накладывать на вас что-то в соответствии с вашими потребностями в выравнивании системы. 1 байтовая структура редко остается без внимания.

0
ответ дан 10 December 2019 в 00:35
поделиться

Это зависит от того, почему вы это делаете. Обычно вы не можете использовать типы менее 8 бит, потому что это адресуемая единица для архитектуры. Однако вы можете использовать структуры для определения разной длины:

struct s {
  unsigned int a : 4;  // a is 4 bits
  unsigned int b : 4;  // b is 4 bits
  unsigned int c : 16; // c is 16 bits
};

Однако нет гарантии, что структура будет иметь длину 24 бита. Кроме того, это может вызвать проблемы с порядком байтов. Там, где это возможно, лучше всего использовать системные независимые типы, такие как uint16_t и т. Д. Вы также можете использовать побитовые операторы и битовые сдвиги для очень специфического поворота вещей.

4
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: