2014-01-14 60 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陣列。

注意:在java中byte總是簽署。 您可以得到由無符號值:

int v = b & 0xFF