8進数を10進数に変換するプログラムを書いています。それは正しくコンパイルされ、すべてが正しくコンパイルされますが、私の変換コードには大きな問題があります。それは私には完全に論理的に思えますが、どういうわけか私がプログラムを実行すると、変換が間違っています(つまり、1が36に変換されます)誰かが何が間違っているのか指摘できますか?
public static int convert(int octal)
{
int d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0;
if(octal >=9999999){
d8 = (octal-(octal%10000000));}
if(octal >=999999){
d7 = (octal-(octal%1000000));}
if(octal >=99999){
d6 = (octal-(octal%100000));}
if(octal >=9999){
d5 = (octal-(octal%10000));}
if(octal >= 999){
d4 = (octal-(octal%1000));}
if(octal >= 99){
d3 = (octal-(octal%100));}
if(octal >= 9){
d2 = (octal-(octal%10));}
if(octal >= 0){
d1 = (octal-(octal%1));}
octal = (d8 * 8^7) + (d7 * 8^6) + (d6 * 8^5) + (d5 * 8^4) + (d4 * 8^3) + (d3 * 8^2) + (d2 * 8^1) + (d1 * 8^0);
return octal;
}
これは私の変換メソッドです。私の主なメソッドは、int8進数を収集する方法です。