2016-07-26 16 views
1

私はJavaデコンパイラを使用していますが、恒常的な整数に対して奇妙なシンボルを与えている点を除いて、分かりやすいコードを与えているようです。例:Javaデコンパイラが奇妙なシンボルを返す

#int[] arr = new int['田']; 

このシンボルの数値は、U + 7530です。このシンボルを数値に戻すことができるのであれば、このメカニズムに頼ることはできませんか?

私の問題は、このコードでは配列外の例外が発生することです。そのため、配列のサイズを調整することは非常に重要です。

+0

OSを提供していません。 OSのロケールが完全なユニコードを必要とするものに設定されていると推測されます。そうであれば、米国やその他の英語を話す言語に設定すると、定数がUnicode文字ではなく整数に解決される可能性があります。 – Gene

+1

'(int) '田' == 30000'です。配列インデックスは常に整数であるため、 ''田 ''と' 30000'のどちらを使っても違いはありません。 –

+0

ありがとうございます。今それは理にかなっています。 –

答えて

0

バイトコードレベルでは、ローカル変数にブール値、バイト、文字、shorts、およびintが区別されません。すべてがちょうどフードの下でintにコンパイルされ、必要に応じて切り捨て命令が挿入されます。

これは、デコンパイラがどのタイプをデコンパイルするか(デバッグメタデータがないと仮定して)任意に決定する必要があることを意味します。あなたの逆コンパイラは整数定数を文字定数に逆コンパイルすることにしました。

関連する問題