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

时间:2014-04-24 05:51:39

标签: 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 = 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 ++有一个函数“fgetc()”No ..?我需要类似的解决方案任何人都可以建议一个好方法..? (对不起,我是Java的初学者,但更了解c ++) 提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试Long.parseLong("<hex string>", 16);将十六进制字符串转换为long值。

答案 1 :(得分:1)

试试这个:

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?*/)));
}

答案 2 :(得分:0)

以下是示例代码。请优化实时使用。

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

    }