我知道我们无法在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