Java转换为十六进制与Python转换为十六进制

时间:2014-07-04 12:37:44

标签: java python hex

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

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

JAVA

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

Python

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

更多信息

它读取的文件我不知道里面的数据。结果是假设

java的结果是:

11FFFD

python的结果是:

11E37B

2 个答案:

答案 0 :(得分:0)

在不知道输入的情况下,它更难说。但是它使用当前可用的有限信息看起来的方式是你不会访问相同的东西,至少在那些代码示例中。

爪哇:

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

在python中将是:

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

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

值得检查您的输入,首先,确保问题是转换,而不是输入(它是如何出现的)。

答案 1 :(得分:0)

就像@Mathias一样,Cicero说,你正在用Java转换一个char,你在Python中转换一个int。

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

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