Есть ли правильный или обычный способ гарантировать, что тип данных будет sizeof 4?Гарантия Тип данных размер
Раньше я только что сделал несколько инструкций typedef, основанных на sizeof различных типов данных, и мне было интересно, есть ли более или более обычный метод иметь типы данных предварительно определенного размера на разных архитектурах?
Для этого вопроса можно сказать, что у меня есть большой массив символов, которые я прочитал из файла. Я хочу прочитать серию из 24 бит целых чисел из этого массива символов. В прошлом я выбрал массив для типа данных с размером моего желаемого типа данных, однако этот метод не работает, если нет примитивного типа данных с моим желаемым размером.
Каков наилучший способ справиться с этой ситуацией?
char x[10] = {1,1,1,1,1,1,1,1,1,1};
uint32_t* y = (uint32_t*)x;
for(int i=0; i < 10; i++)std::cout << "y: " << y[i] << "\n";
output:
y: 16843009
y: 16843009
y: 257
desired output:
y: 65793
y: 65793
y: 65793
....
'uint32_t' не достаточно хорош? –
Чтобы подробно описать комментарий @barakmanos, в [''] появилось множество целочисленных типов фиксированной ширины (http://en.cppreference.com/w/cpp/types/integer) –
CoryKramer
Если я прочитал 32-битный целые числа из списка из 24-битных целых чисел не будут отключены для всех моих значений? – Nick