开发者

Text to Hex conversion in php is inaccurate

I'm trying to convert a text string to hexadecimal in php (开发者_如何学运维which sounds trivial enough) but all the conversions I have tried output incorrect data.

The string I need to convert is;

RTP1 •. • A ¥;¥9ÈKJ| %¯ : E~WF 3HxI#Y¥

The correct result is; 525450310120209501022e2095204120030503040ba53b03040ba539c84b041f4a7c1120202025af032020203a20457e0357462033487849230459a52020202020

But I consistently get; 52545031012020e280a201022e20e280a2204120030503040bc2a53b03040bc2a539c3884b041f4a7c1120202025c2af032020203a20457e0357462033487849230459c2a52020202020

The online calculator at http://www.swingnote.com/tools/texttohex.php works on this perfectly - I have emailed the author to request the php source code but have had no answer.

I've tried the following functions without success;

bin2hex($data);

function strToHex($string)
{
    $hex='';
    for ($i=0; $i < strlen($string); $i++)
    {
        $hex .= dechex(ord($string[$i]));
    }
    return $hex;
}

for ($i = 0; $i < strlen($string); $i++) {
    echo dechex(ord($string[$i]));
}

and a few others I can no longer find... I'm really at a loss with this so any help will be greatly appreciated!

Thanks! Matthew


The input string appears to contain utf-8 encoded characters (I say this based on the output). Try converting these characters back into an ASCII/ISO-8859-1 alike format.

$indat = utf8_decode("...");
$hexdata = bin2hex($indat);


I usually just process it one char at a time.

$str = 'My Cool String!';
$hex = '';

$str_ary = str_split($str);
foreach($str_ary as $char)
{
    $hex .= dechex(ord($char));
}

echo $hex;

Edit: Looking at it again, it looks like our code is very similar (didn't notice the code :\ ). I believe Jeff Parker has the right idea in the comment, it might just be a display issue.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜