How to convert text to \x codes?

后端 未结 6 1520
别跟我提以往
别跟我提以往 2021-01-06 02:27

I want to convert normal text to \\x codes for e.g \\x14\\x65\\x60

For example :

normal text = \"base64_decode\"
converted \\x codes for above text =         


        
6条回答
  •  粉色の甜心
    2021-01-06 02:43

    For an alternative to dechex(ord()) you can also use bin2hex($char), sprintf('\x%02X') or unpack('H*', $char). Additionally instead of using preg_replace_callback, you can use array_map with str_split.

    echo implode(array_map(function($char) {
        return '\x' . bin2hex($char);
    }, (array) str_split($word)));
    
    echo implode(array_map(function($char) {
        return '\x' . implode(unpack('H*', $char));
    }, (array) str_split($word)));
    
    echo implode(array_map(function($char) {
        return sprintf('\x%02X', ord($char));
    }, (array) str_split($word)));
    

    Example: https://3v4l.org/6Pc6X

    bin2hex

    echo implode(array_map(function($char) {
        return '\x' . bin2hex($char);
    }, (array) str_split('base64_decode')));
    

    Result

    \x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65
    

    unpack

    echo implode(array_map(function($char) {
        return '\x' . implode(unpack('H*', $char));
    }, (array) str_split('base64_decode')));
    

    Result

    \x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65
    

    sprintf

    echo implode(array_map(function($char) {
        return sprintf('\x%02X', ord($char));
    }, (array) str_split('base64_decode')));
    

    Result

    \x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65
    

提交回复
热议问题