Java 转换为十六进制 vs Python 转换为十六进制
我正在尝试把一些代码从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()
,而不是输入字符串中字符的位置。
首先检查一下你的输入,确保问题出在转换上,而不是输入本身(看起来问题是出在这里)。