我在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);
这是到目前为止我得到的:
代码的第二行可能可以转换成以下形式:
$bytes = bin2hex($clearKey);
但我不知道php中以下代码的等效性:
hexArray[(bytes[i] & 0xFF) / 16] + hexArray[(bytes[i] & 0xFF) % 16];
附加信息
我将此代码转换为正确的Java语法。
最佳答案
它是使用表格查找的十六进制编码器。它使用平台的默认字符编码将字符串转换为字节。然后它将这些字节转换为十六进制。您要查询的行将计算该字节的高4位和低4位的十六进制数字。因此,整行将一个字节编码为两个十六进制字符。
此Java代码的PHP等效为
$keyId = unpack('H*', $clearKey)[1];