2014-01-14 2 views
1

Я конвертирую некоторый код C в Java, который включает в себя обработку изображений. Тем не менее, я застрял в ситуации, когда я должен преобразовать несколько строк кодов, которые включают в себя вычисление указателя:Как преобразовать C-код в Java - эквивалент указателя в Java

for(i=xMin[k];i<=xMax[k];i++) 
{ 
     for(j=yMin[k];j<=yMax[k];j++) 
     { 
      if (Bimg[i][j]== k1) 
      { 
       /* accessing single channel for r g b value */ 

       b = data[i*step + j*channels + 0]; 
       g = data[i*step + j*channels + 1]; 
       r = data[i*step + j*channels + 2]; 
      }  
     }    
} 

Может кто-нибудь пожалуйста, скажите мне, как преобразовать этот «данные» указатель в Java эквивалент? Здесь «данные» представляют собой переменную указателя.

+1

прочитать http://stackoverflow.com/questions/13716041/java-pointers-equivalent – lakshman

ответ

1

Что такое данные, указывающие на?

Похоже, что это указывает на массив байтов, поэтому просто сделайте данные byte[]. Предполагая, что массив C, на который указывает, и массив Java, на который ссылаются, имеют одни и те же данные, должны работать те же вычисления.

+0

Нет, переменная данных указывает на BytePointer – shashwat13

1

Я предполагаю, что data вы определенно в вопросе на самом деле представляют собой массив из unsigned char. Как:

unsigned char *data = (unsigned char*)malloc(datasize*sizeof(unsigned char)); 

Я считаю, что эквивалент в Java является

byte[] data = new byte[datasize] 

И поскольку Java не позволяют вам управлять указателем. Вы должны использовать индекс для управления массивом data.

Примечание: byte в java всегда подписан. Вы можете получить значение без знака по:

int v = b & 0xFF 
Смежные вопросы