【问题标题】:Java convert to hex vs Python convert to hexJava 转换为十六进制 vs Python 转换为十六进制
【发布时间】:2014-07-04 12:37:44
【问题描述】:

我正在尝试将一些代码从 Python 转换为 java。 代码正在做的一件事是将数字转换为十六进制。但是当我在java中查看结果时。它与 Python 中的不同。

要么我在我的代码中做错了什么,要么在 java 和 python 中的转换存在差异。如果转换有差异。有人可以告诉我我需要做什么,以便 java 应用程序可以以相同的方式进行转换

JAVA

Integer.toHexString(tempString.charAt(d));

Python

hex(ord(d)).replace("0x","")

更多信息

它读取一个我不知道里面数据的文件。结果应该是什么

java的结果是:

11FFFD

python的结果是:

11E37B

【问题讨论】:

  • 您需要发布更多信息。结果怎么不相似?发布两个操作的输出。
  • 我想我知道这里出了什么问题。在 Java 代码中,您实际上是在转换 char,而在 Python 代码中,您是在转换 int

标签: java python hex


【解决方案1】:

在不知道输入的情况下,很难分辨。但从目前可用的有限信息来看,您访问的不是同一个东西,至少在那些代码示例中是这样。

Java:

Integer.toHexString(tempString.charAt(d));

在 python 中是:

hex(ord(tempString[d])).replace('0x', '')

而目前,您访问的是索引的ord(),而不是输入字符串中的字符位置。

首先检查您的输入是值得的,以确保问题是转换,而不是输入(它是这样显示的)。

【讨论】:

    【解决方案2】:

    就像@Mathias Cicero 所说,您在 Java 中转换一个 char,而在 Python 中您正在转换一个 int。

    python 中的 ord() 函数返回 char 的 int 表示,您需要通过将 char 转换为 int 来做同样的事情:

    Integer.toHexString((int) tempString.charAt(d));
    

    【讨论】: