Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Смещение shl  [new]
STestS
Member

Откуда:
Сообщений: 32
Здравствуйте.
Знаю что данная тема уже поднималась здесь не раз, но все таки мне кажется я не нашел решения...

Есть такой код:
Buffer: packed array [0 .. 4095] of Byte;

Var
  Count: integer;
begin
Count := (Buffer[32] shl 24) + (Buffer[33] shl 16) + (Buffer[34] shl 8) + (Buffer[35]);
end;

Меня интересует именно строка с "Count". Почему мы получаем значение с массива а потом смещаемся? Спрашиваю поскольку это что то типа задания.
Буду раз если кто то объяснит.
20 май 20, 08:50    [22136183]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
goldmi45
Member

Откуда:
Сообщений: 1245
STestS
Почему мы получаем значение с массива а потом смещаемся?

Думаете, логичнее сначала смещаться, а потом получать значение из массива?
Или я не понял вопрос...
Операция смещение производится над чем-то. Как производить смещение, если нет числа...

Сообщение было отредактировано: 20 май 20, 08:58
20 май 20, 08:58    [22136188]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12466
STestS,
В массиве находится 4-х байтовое целое, байты расположены в порядке big-endian (сначала старший).
Это один из способов перекодировки.
20 май 20, 09:17    [22136197]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
STestS
Member

Откуда:
Сообщений: 32
goldmi45
STestS
Почему мы получаем значение с массива а потом смещаемся?

Думаете, логичнее сначала смещаться, а потом получать значение из массива?
Или я не понял вопрос...
Операция смещение производится над чем-то. Как производить смещение, если нет числа...


я понимаю последовательность действий, мне не понятно для чего это было сделано...
20 май 20, 09:57    [22136212]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
STestS
Member

Откуда:
Сообщений: 32
Соколинский Борис
STestS,
В массиве находится 4-х байтовое целое, байты расположены в порядке big-endian (сначала старший).
Это один из способов перекодировки.


Допустим это кодировка: если все элементы массива числа представленные в байтовом виде то почему сразу их не переконвертировать...
20 май 20, 09:59    [22136214]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12466
STestS
Допустим это кодировка: если все элементы массива числа представленные в байтовом виде то почему сразу их не переконвертировать...
Это вопрос к тому, кто их в массив записал таким способом.
Рискну предположить, что это хедер какого-то файла и такой стандарт записи, изначально заточенный под big-endian.
20 май 20, 10:04    [22136217]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
STestS
Member

Откуда:
Сообщений: 32
Соколинский Борис
STestS
Допустим это кодировка: если все элементы массива числа представленные в байтовом виде то почему сразу их не переконвертировать...
Это вопрос к тому, кто их в массив записал таким способом.
Рискну предположить, что это хедер какого-то файла и такой стандарт записи, изначально заточенный под big-endian.


Подскажите а как можно просмотреть весь массив в памяти? Дэбаг даст возможность просмотреть весь массив но без смещений...
20 май 20, 10:17    [22136226]     Ответить | Цитировать Сообщить модератору
 Re: Смещение shl  [new]
Polesov
Member

Откуда:
Сообщений: 724
STestS
Подскажите а как можно просмотреть весь массив в памяти?

В отладке <Ctrl+F7>, окно "Evaluate/Modify"
Buffer[i],n
i - стартовый индекс
n - количество элементов
20 май 20, 15:18    [22136422]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить