Биты и байты сдвигаются в C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Биты и байты сдвигаются в C++

Сообщение Anonymous »

У меня довольно интересная задача. Мне нужно выполнить битовый сдвиг с вырезом бит. То есть у меня есть двоичный файл .bin. Первые 16 байт нужно пропустить, нумерацию байтов начать с 0, затем вырезать 3 бита из 17 байт, 140 141 и 142 бита. и сдвинуть всю последовательность на эти 3 бита, Затем пропустить 32 байта, и снова вырезать из байта 3 бита, и снова сдвинуть последовательность. Я немного не понимаю, как сделать сдвиг, когда уже нужно сдвинуть больше 1 байта. В условии также говорилось, что программа должна быть экономичной по времени. Менее чем за минуту вам необходимо обработать файл размером около 50 миллионов байт. Соответственно, нет вложенных циклов и тому подобного.
Вот пример кода, который у меня получился, я думаю, что иду в правильном направлении, но не понимаю, что именно что нужно сделать, чтобы правильно сдвинуть более 1 байта.

Код: Выделить всё

#include 
#include 
#include 
#include 

std::vector Shift(std::vector& src, int val, bool left) {
std::vector res(src.size());
int byteShift = val >> 3;
uint8_t mask = ~(0b00001110);
if (byteShift >= src.size())
return res;
val = 3;
res.insert(res.begin(), src.begin(), src.begin() + 17); // Copy the first 17 bytes unchanged
int j = 1;
for (size_t i = 17; i < src.size()-j; i++) {
if ((i - 16) % 32 == 0 && i != 17) {
res[i + j] = static_cast(((src[i + j] &= mask)>>3) | (src[i + j + 1] > val) | (res[i + j] > val) | (src[i + j] 

Подробнее здесь: [url]https://stackoverflow.com/questions/78297396/bits-and-bytes-shifts-c[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Биты и байты сдвигаются в C++
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Биты и байты сдвигаются в C++
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Записи пользовательского поля со списком Qt сдвигаются вниз, когда элемент предварительно выбран.
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Временные метки, написанные java.sql.SQLData, сдвигаются на определенное количество часов в часовом поясе
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Попытка добавить маркеры для карты Trimble в React с JavaScript SDK, но маркеры сдвигаются с карты, а не при введенном L
    Anonymous » » в форуме Javascript
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»