Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java.lang.long无法应用于Java.lang.string?_Java_Android_Debugging_Error Handling_Hex - Fatal编程技术网

Java.lang.long无法应用于Java.lang.string?

Java.lang.long无法应用于Java.lang.string?,java,android,debugging,error-handling,hex,Java,Android,Debugging,Error Handling,Hex,我正试图写一个程序,将正二进制输入转换成十六进制。 为什么在编译二进制到十六进制转换器时会出现此错误 BinToHex.java:45: toHexString(long) in java.lang.Long cannot be applied to (java.lang.String) hexOutput = Long.toHexString(tempDecString); ^ 1 error 我的代码。。 类B

我正试图写一个程序,将正二进制输入转换成十六进制。 为什么在编译二进制到十六进制转换器时会出现此错误

BinToHex.java:45: toHexString(long) in java.lang.Long cannot be applied to (java.lang.String)
            hexOutput = Long.toHexString(tempDecString);
                            ^
1 error
我的代码。。 类BinToHex 导入java.io.*

public class BinToHex {
    double tempDec,fractionpart;
    long longofintpart,templongDec;
    String inpu ="1001.01";
    String hexOutput,intpart,tempDecString,hex = null;

    static int i = 1;

    public void convertbintohex() {

        if (inpu.contains(".")) {
            int placesAfterPoint = inpu.length() - inpu.indexOf(".") - 1;//every thing
            long numerator = Long.parseLong(inpu.replace(".", ""), 2);//goes 
            double decimalOfInput = ((double) numerator) / (1L << placesAfterPoint);//alright  till here 


            while (true) {
                tempDec = decimalOfInput * 16;
                if ((int)tempDec == tempDec) {
                    tempDecString = String.valueOf(tempDec);
                    templongDec = Long.valueOf(tempDecString).longValue();
                    hexOutput = hexOutput+Long.toHexString(templongDec);
                    break;
                } else {
                    intpart = String.valueOf((long)tempDec);
                    longofintpart = Long.valueOf(intpart).longValue();
                    if(i==1){
                        hex=Long.toHexString(longofintpart);
                        hexOutput = hex + ".";
                        i=i+1;
                    }else{
                        hexOutput = hexOutput + hex;
                    }
                    fractionpart = tempDec-(int)tempDec;
                    decimalOfInput = fractionpart;
                }
            }
        } else {
                // this part is ok
            tempDecString = String.valueOf(Integer.parseInt(inpu, 2));
            templongDec = Long.parseLong(tempDecString, 10);
            hexOutput = Long.toHexString(tempDecString);
        }
        System.out.println(hexOutput);
    }   
}       
请帮忙。
谢谢。

是的,请看以下签名:

你想用一根绳子传过去。考虑到它是要将
长的
转换成一个字符串,我们根本不清楚您希望它做什么,但这就是为什么会出现错误的原因——这正是编译器告诉您的。(编译器错误有时是模糊的,但在本例中它们实际上不是…)

你似乎做了比你应该做的多得多的转换。从外观上看,你自己在做一些十六进制转换,然后再转换成十进制。。。如果要将二进制转换为十六进制,为什么要使用十进制表示法


现在还不清楚您的预期输入/输出是什么,因为其中有一个浮点二进制点,但我只想从二进制解析为
字节[]
,并使用第三方库将该字节数组转换为十六进制。。。除非您知道这些值只在
long
范围内,否则在这种情况下,可以使用
long.parseLong
long.tohextString
,但这些应该是您所需要的。消除十进制与十进制之间的任何转换。

是的,请查看以下签名:

templongDec = Long.parseLong(tempDecString, 10);
hexOutput = Long.toHexString(tempDecString);
你想用一根绳子传过去。考虑到它是要将
长的
转换成一个字符串,我们根本不清楚您希望它做什么,但这就是为什么会出现错误的原因——这正是编译器告诉您的。(编译器错误有时是模糊的,但在本例中它们实际上不是…)

你似乎做了比你应该做的多得多的转换。从外观上看,你自己在做一些十六进制转换,然后再转换成十进制。。。如果要将二进制转换为十六进制,为什么要使用十进制表示法

现在还不清楚您的预期输入/输出是什么,因为其中有一个浮点二进制点,但我只想从二进制解析为
字节[]
,并使用第三方库将该字节数组转换为十六进制。。。除非您知道这些值只在
long
范围内,否则在这种情况下,可以使用
long.parseLong
long.tohextString
,但这些应该是您所需要的。消除任何与十进制的转换

templongDec = Long.parseLong(tempDecString, 10);
hexOutput = Long.toHexString(tempDecString);
您正在将字符串作为参数传递给静态方法。换成

hexOutput = Long.toHexString(templongDec);
您正在将字符串作为参数传递给静态方法。换成

hexOutput = Long.toHexString(templongDec);

Long.tohextstring
方法将
Long
作为参数,而不是
String
,顺便说一句,
double
不存储十进制数字。只有在使用
String.valueOf(double)
将其转换为
String
后,才会将其转换为十进制。在这里您不想这样做,因为您想从二进制转换为十六进制。
Long.tohextstring
方法将
Long
作为参数,而不是
String
,顺便说一句,
double
不以十进制存储数字。只有在使用
String.valueOf(double)
将其转换为
String
后,才会将其转换为十进制。你不想在这里这么做,因为你想从二进制转换成十六进制。