Требуется скопировать небольшую функцию с 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
Комментариев нет:
Отправить комментарий