【问题标题】:Hex to Ascii? Java十六进制到ASCII?爪哇
【发布时间】:2010-11-14 03:21:54
【问题描述】:

我正在寻找一种在 Java 中将十六进制转换为 ascii 的方法。一个例子:

               byte temps[] = new byte[4];

               temps[0] = 0x74;
               temps[1] = 0x65;
               temps[2] = 0x73;
               temps[3] = 0x74;

               String foo = ..(temps);
               System.out.print(foo);

那应该输出“测试”。有人有想法吗?

感谢每一个帮助!

【问题讨论】:

  • 你当然可以尝试自己做作业
  • 这不是您要转换的十六进制,它是(大概)ASCII 字符代码的字节数组。以十六进制表示的数字和十六进制字符串(大多数人将其称为“十六进制”)之间存在很大差异。
  • 这不是一个关于将十六进制转换为ASCII的问题,因为你没有得到例如一个字符串“0x74”。在您的代码中,Java 编译器已经完成了从十六进制的“转换”。

标签: java ascii hex


【解决方案1】:

你的意思是String(byte[] bytes, String encoding)

但是注意那些编码!您正在获取一组字节,您需要指定如何将它们编码为字符。您可以使用使用默认编码的上述版本,但(取决于您的应用程序)可能会导致您进一步悲痛。所以我通常会指定一个编码(通常是 UTF-8)。

我注意到您指定了字节到 ASCII,因此我将明确指定 ASCII 编码 Charset.US-ASCII。不要依赖 JVM 运行时使用的编码!

【讨论】:

  • 问题是ASCII,所以提问者应该写ASCII作为编码。
  • 啊。确实如此。答案修改
【解决方案2】:
String foo = new String(temps);

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 2015-08-23
    • 2012-10-02
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2015-05-22
    • 2017-10-24
    • 2015-03-21
    相关资源
    最近更新 更多