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

0 投票
2 回答
648 浏览
提问于 2025-04-18 12:06

我正在尝试把一些代码从Python转换成Java。代码的一个功能是把数字转换成十六进制。但是当我在Java中查看结果时,发现和Python的结果不一样。

可能是我在代码中做错了什么,或者Java和Python在转换时有区别。如果确实有转换上的不同,能不能告诉我应该怎么做,才能让Java程序的转换结果和Python的一样?

Java代码:

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

Python代码:

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

更多信息:

这个程序读取一个我不知道里面数据的文件,只知道结果应该是什么样的。

Java的结果是:

11FFFD

Python的结果是:

11E37B

2 个回答

0

就像@Mathias Cicero说的,你在Java中是把一个字符转换成其他东西,而在Python中你是把一个整数转换成其他东西。

Python里的ord()函数可以把一个字符转换成对应的整数值,你在Java中也需要通过把字符转换成整数来做到这一点:

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

在不知道输入的情况下,很难判断。不过根据目前有限的信息来看,你在这些代码示例中似乎没有访问到相同的东西。

Java代码如下:

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

在Python中应该是:

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

而你现在访问的是索引的 ord(),而不是输入字符串中字符的位置。

首先检查一下你的输入,确保问题出在转换上,而不是输入本身(看起来问题是出在这里)。

撰写回答