我知道我們無法在Java中安全地訪問對象的地址,因此我們不應該嘗試這樣做。但我需要將此C代碼轉換爲Java。值總是大小爲8 bits
。 C代碼是這樣的:將C代碼轉換爲Java:指針
void merge(int value,unsigned short* outp, int x,int y, int width)
{
unsigned char *outc;
outc=(unsigned char *) outp + y*width +x;
*outc=value;
}
要將其轉換成Java我已經轉換到unsigned short* outp
和short outp[]
對unsigned char* outc
short outc[]
。然後我可以分配值。但我面臨的問題是,當這個函數被循環調用時,其他函數的寬度每次增加,只有一個字節被分配給一個特定的單元格。
我試過這個Java代碼:
void merge(int value, int outp[], int x, int y, int width)
{
if(outp[y*width + x] >0)
{
outp[y*width+x]=outp[y*width+x]<<8 +value;
}
else
{
outp[y*width+x]=value;
}
}
我該怎麼做。請幫忙。謝謝。
請不要這樣做。這嚴重影響了可讀性。嘗試理解Java中的邏輯並重寫它們。添加評論,旁邊的人會祝福你。 – questzen 2012-03-28 13:57:15
@questzen對不起,但我不明白不該做什麼.. – 2012-03-28 14:00:05
一個字'可讀性'。下一個人將不得不經歷相同的障礙來弄清楚發生了什麼。 – questzen 2012-03-28 14:01:35