为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
萧十郎 2023-04-15 10:28:32
您好,我有一个字符串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任何帮助将不胜感激。
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

您正在寻找的解决方案如下,

<?php


function 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);


查看完整回答
反对 回复 2023-04-15
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信