我在PHP中使用这两种类型之间的转换时遇到了问题。这是我在谷歌搜索代码PHP将字符串转换为十六进制和十六进制字符串
function strToHex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
我检查它,并发现这一点,当我使用异或加密。
我有字符串"this is the test"
,在与一个键异或之后,我得到了字符串↕↑↔§P↔§P ♫§T↕§↕
的结果。之后,我尝试通过函数strToHex()将其转换为十六进制,并且我得到了这些12181d15501d15500e15541215712
。然后,我用函数hexToStr()进行测试,我有↕↑↔§P↔§P♫§T↕§q
。那么,我该怎么做才能解决这个问题呢?为什么当我转换这个2样式值时会出错?
你知道有'HEX2BIN()'和'BIN2HEX()'在PHP? – SparKot
* strToHex *返回一个十六进制的*字符串*,所以如果直接使用'^'运算符进行XOR运算,则不会给出任何好结果。也许你可以给* strToHex *另一个参数,它是你想和XOR进行比较的数字,XOR直接在该函数中:'$ hex。= dechex(ord($ string [$ i])^ $ MYKEYBYTE);' –
我想问题在于hexToStr()函数。因为当它转换为字符串时,它传递空格或一些特殊字符,并使问题 – JoeNguyen