Konwersja kawałka kodu z delphi na jave

0

Witam serdecznie.
Muszę napisać klienta na androida do serwera rest API utworzonego z wykorzystaniem mormota
Na androida piszę w java.
Czy może ktoś tu na forum pisał coś takiego i może mi pomóc ??
Mam problem z takim kawałkiem kodu w delphi :

  fSessionIDHexa8 := LowerCase(IntToHex(fSessionID)); /// tu raczej bez problemów
  fSessionPrivateKey := crc32(crc32(0,Pointer(seskey),length(seskey)),pointer(passwdhash),length(passwdhash));  // tu problem z ta funkcją CRC32 - w źródłach SynZIP to kawałek kodu w asm. Jak to przenieść na Jave ??
  x:=GetTickCount;
  tt:=LowerCase(IntToHex(x shr 8));
  url:='api';
  session_signature:=fSessionIDHexa8+tt+LowerCase(Inttohex(crc32(crc32(fSessionPrivateKey,Pointer(tt),8),Pointer(url),length(url))));//tu podobnie jak wyżej

z góry dziękuję za pomoc.

2

Nie żebym się znała, ale w necie piszą, że to suma kontrolna. Widzę, że w javie też jest taka metoda. Przykład:
https://examples.javacodegeeks.com/core-java/util/zip/calculate-crc32-checksum-for-byte-array/

0

@szarotka Również "nie znam się, ale się wypowiem" :)

Delphi zwyczajem naszych przodków nigdy nie porzuciło ostatecznie mniemania że char to byte i byte to char. W Javie napisy to jest konsekwentnie unikod, a bajty są zupełnie inne od char. Spodziewam się subtelnych problemów przy liczeniu sumy kontrolnej, przed którymi trzeba się zabezpieczyć.

1

@AnyKtokolwiek: ale chyba nie chcesz powiedzieć, że w Javie nie da się policzyć sumy kontrolnej? ;)

Na pewno się da, bez żadnych problemów, tyle że nie można portować tego kodu (tym bardziej 1:1), ze względu na znaczące różnice pomiędzy tymi językami. Zamiast portować kod, trzeba się po prostu rozejrzeć za odpowiednimi klasami przygotowanymi do tego celu.

Lepiej by było, gdybyś założył wątek w kategorii Java i po prostu zapytał jak policzyć CRC32. Albo zaglądnął do wyszukiwarki i poczytał na temat tego jak się to robi.

1
AnyKtokolwiek napisał(a):

Delphi zwyczajem naszych przodków nigdy nie porzuciło ostatecznie mniemania że char to byte i byte to char.

Ke? Od dawna (jakoś od ± Delphi 2009) char ma dwa bajty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1