我正在嘗試編寫一個用於將正數二進制輸入轉換爲十六進制的程序。 爲什麼會出現這樣的錯誤,而我的編譯二進制到十六進制轉換器..Java.lang.long不能應用於java.lang.string嗎?
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);
}
}
類測試,,
public class Test{
public static void main(String args[]){
BinToHex i = new BinToHex();
i.convertbintohex();
}
}
plz幫助。 謝謝。
'Long.toHexString'方法更改它以'long'作爲參數,而不是String' – 2014-09-28 17:14:37
的'順便說一句,'double'不存儲在小數的數字。只有在你使用'String.valueOf(double)'將它轉換爲'String'後,它纔會被轉換爲十進制。你不想在這裏做,因爲你想從二進制轉換爲十六進制。 – 2014-09-28 19:11:28