Переделать код из Java в Delphi

178
16 сентября 2017, 23:13

Требуется скопировать небольшую функцию с Java (Android Studio) на Delphi, для этого необходимо функцию эту переделать немного так как синтаксис отличается. Столкнулся с проблемой при редактировании, не понимаю что значат данные строки, прошу объяснить и написать как будут выглядеть строки в 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

Прошу помощи в переделке, спасибо!

Answer 1

Bitwise Operators

http://www.delphibasics.co.uk/RTL.asp?Name=shl

<< - shl

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/expressions_xml.html

^ - xor
& - and

READ ALSO
Обфускация Java приложения

Обфускация Java приложения

У меня есть старенький лаунчер для игрыНо там очень хлипкая защита

175
Spring Security And OAuth2

Spring Security And OAuth2

На проекте используется Spring Security, стандартная форма логинаСейчас еще нужно дабавить возможность авторизации через Azure AD(с помощью протокола...

167
Java Sqlitte передача аргументов в запрос

Java Sqlitte передача аргументов в запрос

Обьясните почему так не работает:

199
вызов методов StackTraceElement Thread

вызов методов StackTraceElement Thread

Не могу никак разобраться в этом коде:

204