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
后,才会将其转换为十进制。你不想在这里这么做,因为你想从二进制转换成十六进制。