十进制转换错误

use*_*873 3 java decimal octal

我正在编写一个程序,将八进制数转换为小数.它编译正确和一切,但我的转换代码有一些重大错误.这对我来说似乎是完全合乎逻辑的,但不管怎样,当我运行程序时,转换是错误的(即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;

}
Run Code Online (Sandbox Code Playgroud)

这只是我的转换方法,我的主要方法是收集int八进制;

Jon*_*eet 7

这就是问题:

8^7
Run Code Online (Sandbox Code Playgroud)

^运营商没有做什么,你认为它.它做二进制异或...

但是,我会说整个设计显然是可疑的.一个int值是不是""八进制或任何其他基地-它只是一个整数.数字10是数字10,无论是十进制的"10",十六进制的"A"还是八进制的"12".如果你有一个你想要解析为八进制数字的字符序列,那么方法的输入应该是a String,而不是a int.