Если у меня есть целое число без знака от 0 до 16, и я хочу записать его в двоичный файл, не записывая для него целый байт, как бы один сдвинуть бит для его достижения?Запись 4 битов в двоичный файл с потоком
0-16 означает, что мне нужны только 4 бита, поэтому я должен иметь возможность хранить 2 разных номера в одном байте вправо?
Следующий код записывает 1 номер на 1 байт:
std::ofstream file;
file.open("test.bin", std::ios::binary|std::ios::out);
char oneByteNum = (char)fourByteNum; // Converting from some 4 byte integer to a 1 byte char
file.write(&oneByteNum ,sizeof(char));
Использование bitshifts, как можно достичь 2 числа в 1 байт? Я полагаю, что чтение номера из байта будет аналогичным, обратным 2-ступенчатым процессом?
'char oneByteWithTwoNums = (oneByteNum1 << 4) | (oneByteNum2 & 0x0F); ' –