如何将ASCII转换为十六进制

Ari*_*Ari 0 java clojure

如何 ASCII值转换为十六进制和二进制值(不是ASCII中的字符串表示形式)?例如,如何将十进制值26转换为0x1A?

到目前为止,我已尝试使用以下步骤进行转换(请参阅下面的实际代码):

  1. 将值转换为字节
  2. 将每个字节转换为int
  3. 通过将每个int转换为十六进制 String.toString(intValue, radix)

注意:我确实询问了有关将十六进制值写入文件的相关问题.

Clojure代码:

(apply str
  (for [byte (.getBytes value)]
    (.replace (format "%2s" (Integer/toString (.intValue byte) 16)) " " "0")))))
Run Code Online (Sandbox Code Playgroud)

Java代码:

Byte[] bytes = "26".getBytes();
for (Byte data : bytes) {
    System.out.print(String.format("%2s", Integer.toString(data.intValue(), 16)).replace(" ", "0"));
}
System.out.print("\n");
Run Code Online (Sandbox Code Playgroud)

Ern*_*ill 8

十六进制,十进制和二进制整数不是不同的东西 - 只有一个整数的底层表示.你说你要避免的一件事 - "ASCII字符串表示" - 是唯一不同的东西.变量总是相同的,它只是你打印它的方式不同.

现在,我并不是100%清楚你要做什么.但鉴于上述情况,路径很明确:如果你有一个String,int通过解析(即使用Integer.parseInt())将其转换为a .然后,如果您希望以某种格式打印,则可以轻松地将其打印int为您想要的任何内容,例如printf格式说明符.

  • @luiscubal:从jdk 5开始,它是java.io.PrintStream上的一个方法. (5认同)
  • @Nathan Hughes 我不知道。 (2认同)