Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Как преобразовать битовые операторы из Java в Delphi?

Требуется скопировать небольшую функцию с Java (Android Studio) на Delphi, для этого необходимо функцию эту переделать немного так как синтаксис отличается. Столкнулся с проблемой при редактировании, не понимаю что значат данные строки:
Код в Java:
public static long get(byte[] bytes, int offset, int bytesCount) { if (bytes.length == 0) { throw new IllegalArgumentException("Empty array"); } else { long result = 0; for (int i = offset; i < offset + bytesCount; i++) { result ^= (((long) bytes[i]) & 255) << ((((bytesCount - 1) + offset) - i) * 8); } return result; } }
Не понятна следующая строка:
result ^= (((long) bytes[i]) & 255) << ((((bytesCount - 1) + offset) - i) * 8);
Мои наработки на данный момент в Delphi (до данной строки):
function get(bytes: array of byte; offset,bytesCount: integer):LongInt; var i:integer; begin if (length(bytes) = 0) then begin end else begin result := 0; for i := offset to (offset + bytesCount) do begin
Прошу объяснить и написать как будут выглядеть строки в Delphi?


Ответ

Это битовые операторы (Bitwise Operators):
<< - оператор смещения влево (shl - http://www.delphibasics.co.uk/RTL.asp?Name=shl) ^ - оператор xor & - оператор битового and
А здесь дополнительное описание всех операторов и деталей их работы: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/expressions_xml.html

Комментариев нет:

Отправить комментарий