$a = (int) 456;求输出字符串$b = 'C8010000';//定长8个字符十进制 456 = 十六进制 1C8就是转换16进制后 低位在前,高位补零 输出写个简单点的,别用循环

解决方案 »

  1.   

    这样够简单吧?$a = (int) 456;
    echo sprintf('%08X', current(unpack('L', pack('N', $a))));
      

  2.   

    让高手见笑了,我给出一个不用unpack的例子:
    <?php
    $a = 456;
    $b = sprintf("%X",$a);
    $len = strlen($b);
    $xlen = 8 - $len;
    $c = sprintf("%0".$xlen."d",0);
    $d = $b.$c;
    echo $d;
    ?>输出结果:1C800000
      

  3.   

    这样也是可以的
    $a = (int) 456;
    $p = str_split(sprintf('%08X', $a), 2);
    echo join('', array_reverse($p));
      

  4.   

    来个复杂的 $a = (int) 456;
    $b = sprintf("%X",$a);
    $b = strlen($b)%2 == 0 ? $b : '0'.$b;
    echo str_pad(join('', array_reverse(str_split($b, 2))), 8, '0', STR_PAD_RIGHT);