Python JPype 从 Java 类实例中获取值



>我有一个这样的代码

message = "abc".encode()
messageDigest = java.security.MessageDigest.getInstance("SHA-256")
messageDigest.update(message)
hashdata = messageDigest.digest()

在这里,我打印hashdata我得到<<java class 'byte[]'> at 0x7f1ee005df60>

但我需要它的价值。我怎样才能得到它的价值?

目前我们不支持 Java 字节数组的__bytes__运算符,但使用定制器很容易添加。

import jpype
from jpype import java
# Add the customizer before starting the JVM
@jpype.JImplementationFor('byte[]')
class ByteConverter(object):
def __bytes__(self):
return bytes(self[:])
# Now start the JVM
jpype.startJVM(convertStrings=False)
# Perform Java operations
message = "abc".encode()
messageDigest = java.security.MessageDigest.getInstance("SHA-256")
messageDigest.update(message)
hashdata = messageDigest.digest()
# We got back a Java byte[] and we would like a Python bytes
print(bytes(hashdata))

试试这个

for (int i = 0; i < hash.length; i++) {
if ((0xff & hash[i]) < 0x10) {
hexString.append("0"
+ Integer.toHexString((0xFF & hash[i])));
} else {
hexString.append(Integer.toHexString(0xFF & hash[i]));
}
}

最新更新