Я пытаюсь перенести некоторый код C на Java, однако я изо всех сил пытался выяснить, что делают эти строки кода.char * (Array) cast to unsigned long + 1?
Примечание: rawEntry
имеет тип char*
и, кажется, в 12 байт, выделенные в качестве такого
char *rawEntry = (char*)malloc(0x000c);
unsigned long *l;
unsigned long offset;
// ...
l = (unsigned long*) rawEntry + 1;
offset = ntohl(*l);
Насколько я могу судить, она занимает первые четыре пункта из массив, и ставит их вместе, чтобы сформировать длинный, однако мои попытки в java были менее успешными.
offset = (rawEntry[0] << 24) +
(rawEntry[1] << 16) +
(rawEntry[2] << 8) +
(rawEntry[3]) +
1;
Когда представлены следующим массиве,
1 0 0 0 0 0 0 0 0 0 11 -38
С код выхода 3034 в качестве смещения
кода выходов Мои Java 16777217, или 1, если перевернуть обратный порядок байт
'rawEntry' может быть' 'символ * или массив' char', но не оба. Различие может не иметь значения для вашей конкретной задачи, но опять же, возможно. Нам трудно сказать, потому что вы на самом деле не дали нам много работы. –
'char * rawEntry = (char *) malloc (0x000c);' - так выделяется 'rawEntry' @JohnBollinger – CraftedCart