我在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