猿问

php 字符串到十六进制与 2 的补码:

您好,我有一个字符串193390663,我想将其转换为hexwith 2's compliment。输出是0B86E847


现在我正在使用下面的功能,但它给了我313933333930363633


 public static function String2Hex($string)

{

    $hex = '';

    for($i=0; $i<strlen($string); $i++)

    {

        $hex.=dechex(ord($string[$i]));

    }

}

更新 1


试过这个


 $sub2 = substr($m->msn,4,9);

            $m->m_hex = dechex ($sub2);

输出


b86e847

但我想要输出像0B86E847


任何帮助将不胜感激。


萧十郎
浏览 165回答 1
1回答

慕斯709654

您正在寻找的解决方案如下,<?phpfunction signed2hex($value, $reverseEndianness = true){    $packed = pack('i', $value);    $hex='';    for ($i=0; $i < 4; $i++){        $hex .= strtoupper( str_pad( dechex(ord($packed[$i])) , 2, '0', STR_PAD_LEFT) );    }    $tmp = str_split($hex, 2);    $out = implode('', ($reverseEndianness ? array_reverse($tmp) : $tmp));    return $out;}echo signed2hex(193390663);
随时随地看视频慕课网APP
我要回答