将Java代码转换为php-可能是十六进制到二进制

将Java代码转换为php-可能是十六进制到二进制,java,php,Java,Php,我这里有Java代码,我希望将其转换为PHP。它可能与从ascii转换为二进制,然后转换为十六进制有关,但我自己不太清楚。有人能帮忙吗 String clearKey = "test"; char [] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; byte [] bytes = clearKey.getBytes(); String keyId = "";

我这里有Java代码,我希望将其转换为PHP。它可能与从ascii转换为二进制,然后转换为十六进制有关,但我自己不太清楚。有人能帮忙吗

String clearKey = "test";
char [] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
byte [] bytes = clearKey.getBytes();
String keyId = "";
for (int i = 0 ; i < clearKey.length() ; i ++) {
    keyId = keyId + hexArray[(bytes[i] & 0xFF) / 16] + hexArray[(bytes[i] & 0xFF) % 16];
}
System.out.println(keyId);
但我不知道php中以下代码的等价物是什么:

hexArray[(bytes[i] & 0xFF) / 16] + hexArray[(bytes[i] & 0xFF) % 16];
其他信息


我将此代码转换为正确的Java语法。

这是一个使用表查找的十六进制编码器。它使用平台的默认字符编码将字符串转换为字节。然后它将这些字节转换为十六进制。您询问的行计算字节的高4位和低4位的十六进制数字。因此,整行将一个字节编码为两个十六进制字符

这段Java代码的PHP等价物是

$keyId = unpack('H*', $clearKey)[1];

这不是Ruby代码,它看起来很像Java。@p11y直到for/next循环中缺少括号为止,但我很确定它是Javaotherwise@owlstead是的,代码中有一些错误。例如,也没有称为
bytes
的类型,作者的意思可能是
byte
。然而,数组表示法和
getBytes()
立即让我想到了Java。我想知道是否有一种方法可以让我在某个地方运行此代码(在括号中进行了一些修复之后)来帮助我比较结果?尝试了此方法,但结果不同,不管怎样,您是否可以提供一个证据,证明代码与我问题中的java代码类似?尽管我在上面有评论,我还是在这里创建了:java:Php:
$keyId = unpack('H*', $clearKey)[1];