Не пытайтесь превратить его в Java, определить, что она делает, и записать его в Java.
Немногие образованные догадки, основанные на ваших знаниях программирования, должны помочь вам понять код. Это большое преимущество языков программирования над естественными языками, понимание программирования, и вы обычно можете сделать хорошее образованное предположение о значении фрагмента кода, даже если вы не знаете язык. В естественных языках одно и то же просто не выполняется, зная, скажем, что французский язык мало помогает в чтении хинди!
Итак, давайте посмотрим, uint8_t
, вероятно, тип, какой он может быть? Ну int
звучит как целое число, 8
, вероятно, является величиной целого числа в битах - оно встречается во второй строке, которая также содержит слово bytes
, а u
, вероятно, означает беззнаковое. Поэтому предположим, что uint8_t
- это неподписанное 8-битовое целое число. Теперь посмотрим на другие подобные типа слова, они имеют смысл так же?
Так что же делает код? Ну, вы поняли, что NSData *
«нравится» byte[]
, так что бы код flags
? Может быть, первый байт в массиве? Как насчет tempData
? Ну есть 32
в типах здесь, и это четыре байта.
Получив tempData
, что делает код? Некоторые манипуляции, которые приводят к tempValue
, который является float
. Возможно, float
- это 32-битное число с плавающей запятой? Это, конечно, то, что есть на Java.
Однако здесь вы собираетесь ударить по стене. Если вы посмотрите, как 32-битное число с плавающей запятой представлено в IEEE 754 - наиболее распространенный способ представления чисел с плавающей запятой, вы обнаружите, что оно хранится в двоичном формате, а мантисса - фракция (см. Wikipedia) ,
Теперь посмотрим на код, pow(10, exponent)
выглядит как 10 к власти, не 2 к власти. И выглядит ли мантисса, как ее рассматривают как фракцию?
Таким образом, независимо от того, какие 4 байта, которые вы предположили, преобразуются в float
, он выглядит так: (a) они не являются типичным 32-битным поплавком или (b) код Objective-C неверен ...
Итак, вернемся к первому пункту - . Определите, что должен делать этот код, а затем писать его прямо в Java, не пытайтесь его преобразовать.
HTH