我正在尝试将php中的一段代码移动到编码有效负载的java,但我无法理解php究竟在做什么以及如何用Java实现它。
我在php中有如下行:
pack('H12CCVV', $id, $x, $y, $z, $w);
从阅读php和珍珠文档我认为这是对十六进制前12个字符和2个无符号字符然后2个无符号短裤,但我不确定这种理解我是否正确。我发现以下情况属实:
pack('H12', $id) == pack('H12', $id, $x, $y, $z, $w);
让我相信$x
& $y
编码为C
,即unsigned char和$z
& $w
被编码为V,即无符号短。
我也相信(但不是100%并且不知道我可以如何验证)
php中的 pack('H*', $id)
与java中的DatatypeConverter.printHexBinary(id.getBytes())
相同
它只是: 1 - 将Id的前12个字符的十六进制作为字符串 2 - 附加字符串X& ÿ 3 - 附加字符串短的Z& w ^ ?
如果不是我应该如何处理它?</ p>
最后,如果有人可以帮我弄清楚如何验证,我正在使用PhpStorm和Intellij CE,所以我可以调试但是我不能直接将pack的值复制为字符串,因为编码会导致问题,例如:
pack('H12CCVV', $id, $x, $y, $z, $w);