在Java中如何将字符转换为字符串?

在Java中如何将字符转换为字符串?,java,string,char,Java,String,Char,我有一个文本文件,其中包含“捕获的网络数据包的标题”作为十六进制值,如下所示 FC-C8-97-62-88-5F-74-DE-2B-C8-C7-E5-08-00-45-00-00-28-4E-C4-40-00-80-06-BD-65-C0-A8-01-03-AD-C2-7F-38-C9-96-01-BB-F8-01-7F-5F-B6-8A-15-22-50-10-40-42-72-8C-00-00. 我需要将它们转换为十进制值。。。我在这里做得很少 InputStream input = ne

我有一个文本文件,其中包含“捕获的网络数据包的标题”作为十六进制值,如下所示

FC-C8-97-62-88-5F-74-DE-2B-C8-C7-E5-08-00-45-00-00-28-4E-C4-40-00-80-06-BD-65-C0-A8-01-03-AD-C2-7F-38-C9-96-01-BB-F8-01-7F-5F-B6-8A-15-22-50-10-40-42-72-8C-00-00.
我需要将它们转换为十进制值。。。我在这里做得很少

InputStream input = new FileInputStream("data.txt");
OutputStream output = new FileOutputStream ("converteddata.txt");
int data = input.read();
while (data != -1) 
{
  char ch = (char) data;
  output.write(ch);
  data=input.read(); 
} 
input.close(); 
output.close();
现在,我的问题是。。。如何获取每个包含“2”个字符的十六进制字符串。。?(例如“AD”或5F等,以便将其转换为十进制值)

< >我知道C++有一个函数“fgcc-()”。我需要类似的解决方案。有人能提出一个好办法吗。。?(对不起,我是java初学者,但C++更懂) 提前感谢。

试试
Long.parseLong(“,16”)
将十六进制字符串转换为
long

试试这个:

String strHex = "FC-C8-97-62-88-5F-74-DE-2B-C8-C7-E5-08-00-45-00-00-28-4E-C4-40-00-80-06-BD-65-C0-A8-01-03-AD-C2-7F-38-C9-96-01-BB-F8-01-7F-5F-B6-8A-15-22-50-10-40-42-72-8C-00-00";

String[] hexParts = strHex.split("-");


for (String myStr : hexParts) {

  // System.out.println(toHex(myStr));
   System.out.println(toDecimal(myStr));
}


// getting For Decimal values from Hex string
public int toDecimal(String str){
    return Integer.parseInt(str.trim(), 16 );
}

// getting For Hex values
public String toHex(String arg) {
    return String.format("%x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}

下面是一个示例代码。请为实时使用进行优化

public static void main(String[] args) throws IOException {
        OutputStream output = new FileOutputStream ("converteddata.txt");
        BufferedReader br = new BufferedReader(new FileReader(new File("data.txt")));
        String r = null;
        while((r=br.readLine())!=null) {
            String [] str = r.split("-");
            for (String string : str) {
                Long l = Long.parseLong(string.trim(), 16);
                output.write(String.valueOf(l).getBytes());
                output.write("\n".getBytes());
            }

        }
        br.close(); 
        output.close();

    }

为什么不
Integer.parseInt(“hexstring”,16)
在这种情况下给定的字符串不能高于255。@kai两者都可以工作,在这种情况下,字符串不能高于255是正确的,但是对于其他可能正在分析更大的十六进制字符串的人,我觉得这将是更通用和可用的。谢谢你的提醒!是的,先生。。。这是一个“简单的解决方案”。。。谢谢谢谢,先生。。。但是,我们可以保留连字符“-”而不拆分它吗。。。?因为在我执行之后,字符串变成了这样。。。2522001519813695116224320019922298069004182199640128617511719216813安全。。output.write(String.valueOf(l.getBytes());output.write(“-”.getBytes());它也在工作,先生。。。但我刚刚将“String strHex”初始化为空值。。。因为这是一个“包头”,在那个文件中反复出现。谢谢好的,您可以在运行时更新strHex的值并使用它。