私はJavaでオブジェクトのアドレスに安全にアクセスできないことを知っています。このようなことは絶対にしないでください。しかし、私はこのCコードをJavaに変換する必要があります。値は常にサイズ8 bits
です。私はshort outc[]
にshort outp[]
とunsigned char* outc
にunsigned short* outp
を変換しているのJavaに変換するには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;
}
:Cのコードは次のようです。それから私は部分的に値を割り当てることができます。しかし、私が直面している問題は、この関数が別の関数によってループ内で呼び出されたときに、幅が毎回増え、特定のセルに1バイトしか割り当てられないということです。
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
@questzen申し訳ありませんが、私は何をしないか理解していませんでした.. –
1ワード '可読性'。次の人は何が起こっているのか把握するために同じハードルを通過する必要があります。 – questzen