以十六进制和后退编码/解码字符串

OTA*_*TAR 4 php string unicode hex

给定一个可能包含任何字符的字符串(包括unicode字符),如何将此字符串转换为十六进制表示形式,然后反向并从十六进制获取此字符串?

Mar*_*ski 14

使用pack()unpack():

function hex2str( $hex ) {
  return pack('H*', $hex);
}

function str2hex( $str ) {
  return array_shift( unpack('H*', $str) );
}

$txt = 'This is test';
$hex = str2hex( $txt );
$str = hex2str( $hex );

echo "{$txt} => {$hex} => {$str}\n";
Run Code Online (Sandbox Code Playgroud)

会产生

这是测试=> 546869732069732074657374 =>这是测试