有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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++更懂) 提前谢谢


共 (3) 个答案

  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. # 2 楼答案

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

    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();
    
        }
    
  3. # 3 楼答案

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