java - 十进制转换错误

标签 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;

}

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

最佳答案

问题是:

8^7

^ operator不做你认为它做的事。它执行二进制 XOR...

但是,我要说整个设计显然值得怀疑。 int 值不是“八进制”或任何其他基数——它只是一个整数。数字十就是数字十,无论是十进制的“10”、十六进制的“A”还是八进制的“12”。如果您有一个要解析为八进制数字的字符序列,则该方法的输入应该是 String,而不是 int

关于java - 十进制转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142977/

相关文章:

java - 将@EJB注入(inject)到JBoss中的Spring Bean中

java - Hazelcast 的开源替代品?

java - ActiveMQ JMS 消息选择

perl - 将字符串 "0x30"和十六进制数 0x30 传递给 hex() 函数之间的区别

javascript - 文本框十进制格式修复

java - Java 中的八进制到文本

Java八进制计算

java - GWT 单例小部件在注入(inject)后从 DOM 中删除

C# 科学计算 - 大数小数位数

在 C 中将八进制数转换为十进制数