62

PHPでこの2つのタイプを変換するときに問題が発生しました。これは私がグーグルで検索したコードです

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;
}

XORを使用して暗号化するときに確認したところ、これがわかりました。

私は string を持っています。"this is the test"キーとの XOR の後、結果は string になります↕↑↔§P↔§P ♫§T↕§↕。その後、関数 strToHex() で16進数に変換しようとしたところ、これらが得られまし12181d15501d15500e15541215712た。次に、関数 hexToStr() でテストしたところ、↕↑↔§P↔§P♫§T↕§q. では、この問題を解決するにはどうすればよいでしょうか。この 2 つのスタイル値を変換すると、なぜ間違っているのですか?

4

8 に答える 8

34

PHP:

文字列から 16 進数へ:

implode(unpack("H*", $string));

16 進数から文字列へ:

pack("H*", $hex);
于 2017-09-21T13:02:05.523 に答える
13

これが私が使用するものです:

function strhex($string) {
  $hexstr = unpack('H*', $string);
  return array_shift($hexstr);
}
于 2016-03-08T21:30:35.280 に答える