gpt4 book ai didi

java.lang.long 不能应用于 java.lang.string?

转载 作者:行者123 更新时间:2023-12-01 18:26:14 25 4
gpt4 key购买 nike

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

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();
}
}

请帮忙。谢谢。

最佳答案

嗯,是的,看看 Long.toHexString 的签名:

public static String toHexString(long i)

您正在尝试传递一个字符串。鉴于它的目的是将long转换为一个字符串,所以根本不清楚您期望它做什么,但这就是您收到错误的原因 - 这这正是编译器告诉你的。 (编译器错误有时很模糊,但在这种情况下它们实际上不是......)

您的转化次数似乎多于应有的转化次数。从外观上看,您正在自己进行一些十六进制转换,然后进行一些到十进制的转换...如果您要将二进制转换为十六进制,为什么还要使用十进制表示进行任何操作? p>

考虑到其中有一个 float 二进制点,目前还不清楚您的预期输入/输出是什么,但我只是将二进制解析为 byte[] 并转换该字节使用第 3 方库将数组转换为十六进制...除非您知道这些值仅在 long 范围内,在这种情况下,可以使用 Long.parseLong > 和 Long.toHexString,但这些应该是您所需要的全部。摆脱任何与十进制之间的转换。

关于java.lang.long 不能应用于 java.lang.string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com