php中的pack()函数 H格式的(H 一个十六进制串,高四位在前)
java代码如何实现?
用以下方式大部分相同,总有一点不相同,不知道差别在哪里
public String toStringHexTest(String s) {
byte[] baKeyword = new byte[s.length() / 2];
for (int i =0; i < baKeyword.length; i++) {
try {
baKeyword[i]=(byte)(0xff&Integer.parseInt(s.substring(i*2,i*2+2),16));
}catch (Exception e) {
e.printStackTrace();
}
}
try {
s= new String(baKeyword,"gbk");// UTF-16le:Not
} catch (Exception e1) {
e1.printStackTrace();
}
return s;
}
你的
qVFcUS4kPxNMPw1HEEAXPw==
是怎么产生出来的?
用你贴出来的方法可以实现pack的功能。
你用的base64处理不是md5吧?
我试过了,原因是因为你文件存储编码方式的不同,PHP文件你使用的是GBK编码,而java文件你用的是UTF-8编码。
如果你把php文件保存成UTF-8格式,就会和java处理产生的结果是一样的。
不知为何,我用php
<?php
echo base64_encode(pack("H*", "a9515c512e243f134c8b0d471040179b"));
?>
页面显示的是
qVFcUS4kPxNMiw1HEEAXmw==
和java显示的是一样的啊,php保存成GBK编码。