首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中将十六进制字符串转换为ASCII

在Java中将十六进制字符串转换为ASCII
EN

Stack Overflow用户
提问于 2011-01-25 02:30:42
回答 6查看 109.1K关注 0票数 37

我希望这不是一个太愚蠢的问题,我已经看了5个不同的谷歌结果页面,但没有找到任何关于这方面的东西。

例如,我需要做的是将包含所有十六进制字符的字符串转换为ASCII

代码语言:javascript
复制
String fileName = 

75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000

我看到的每一种方法都让人觉得你必须先把它放入一个数组中。有没有办法遍历这两个元素并将其转换?

EN

回答 6

Stack Overflow用户

发布于 2015-05-18 16:55:06

使用javax.xml.bind.DatatypeConverter最简单的方法是:

代码语言:javascript
复制
    String hex = "75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000";
    byte[] s = DatatypeConverter.parseHexBinary(hex);
    System.out.println(new String(s));
票数 11
EN

Stack Overflow用户

发布于 2011-01-25 02:42:25

代码语言:javascript
复制
String hexToAscii(String s) {
  int n = s.length();
  StringBuilder sb = new StringBuilder(n / 2);
  for (int i = 0; i < n; i += 2) {
    char a = s.charAt(i);
    char b = s.charAt(i + 1);
    sb.append((char) ((hexToInt(a) << 4) | hexToInt(b)));
  }
  return sb.toString();
}

private static int hexToInt(char ch) {
  if ('a' <= ch && ch <= 'f') { return ch - 'a' + 10; }
  if ('A' <= ch && ch <= 'F') { return ch - 'A' + 10; }
  if ('0' <= ch && ch <= '9') { return ch - '0'; }
  throw new IllegalArgumentException(String.valueOf(ch));
}
票数 3
EN

Stack Overflow用户

发布于 2011-01-25 02:40:34

查看Convert a string representation of a hex dump to a byte array using Java?

忽略编码等,你可以做new String (hexStringToByteArray("75546..."));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4785654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档