Tôi gặp sự cố khi chuyển đổi giữa loại 2 này trong PHP. Đây là mã tôi đã tìm kiếm trong googleChuỗi chuyển đổi PHP thành hex và hex thành chuỗi
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;
}
Tôi kiểm tra và phát hiện ra điều này khi tôi sử dụng XOR để mã hóa.
Tôi có chuỗi "this is the test"
, sau khi XOR có khóa, tôi có kết quả là chuỗi ↕↑↔§P↔§P ♫§T↕§↕
. Sau đó, tôi đã cố gắng chuyển nó thành hex bằng hàm strToHex() và tôi nhận được các số 12181d15501d15500e15541215712
. Sau đó, tôi đã thử nghiệm với hàm hexToStr() và tôi có ↕↑↔§P↔§P♫§T↕§q
. Vì vậy, tôi nên làm gì để giải quyết vấn đề này? Tại sao nó sai khi tôi chuyển đổi giá trị kiểu 2 này?
Bạn biết có những 'HEX2BIN() 'và' BIN2HEX() 'trong PHP? – SparKot
* strToHex * trả về một * chuỗi * của hex - vì vậy nếu bạn XOR trực tiếp với toán tử '^', điều đó sẽ không cho kết quả tốt. Có lẽ bạn có thể cho * strToHex * một tham số khác là số bạn muốn XOR, và XOR trực tiếp bên trong hàm đó: '$ hex. = Dechex (ord ($ string [$ i])^$ MYKEYBYTE); ' –
Tôi nghĩ vấn đề là ở hàm hexToStr(). Bởi vì khi nó chuyển đổi thành chuỗi, nó vượt qua không gian hoặc một số ký tự đặc biệt, và làm cho vấn đề – JoeNguyen