如何在PHP中将多个十进制值转换为十六进制

时间:2014-04-30 09:42:19

标签: php

大家好我试过搜索了一下,但没有找到任何能帮助我的东西,请帮助我这是最后一件事,这将有助于我的程序验证系统开始我正在尝试扫描用户基本ID,现在存储BaseID在我的数据库中,我通过sql获取它,并从那里从我的程序(在Lua中制作)读取问题是我不能直接扫描它的4byte格式的BaseID,并给出太多的结果,如果我以十六进制形式转换它很好,我想在服务器上使用PHP将其转换为十六进制格式,所以一旦它获取它以十六进制转换,所以我需要帮助转换脚本我无法做到atm我使用

$BaseID = ''
$BaseIDHex = dechex($BaseID);
{
   echo $BaseIDHex;
}

它做了我需要的部分

假设我的BaseID为1234567890,它会将输出显示为:499602D2 但是我希望它以这种形式出现:D2 02 96 49(倒置且间隔空间)


更新:同一个新问题

$BaseID  = '';
$BaseID  = $row1['field_12'];
$Addition = ' 00 00 00 00 00 00 00 00 00"';
$BaseIDHex = dechex($BaseID);
$result = '';
while(strlen($BaseIDHex) >=2){
    $result = strtoupper($result.substr($BaseIDHex, -2))." ";
    $BaseIDHex = substr($BaseIDHex, 0, strlen($BaseIDHex)-2);
}
echo 'check = "';
echo trim($result);
echo $Addition;

它使我check = "B9 09 EE 00 00 00 00 00 00 00 00 00"

它完美地工作现在我想在上面的代码中进行一些更改$ BaseID是1 no。 15600057但有时我有多个id存储在db中,如15600057,12600057,我知道如何将它们转换为hexstring并以上述代码中显示的相同方式回显它们?所以它像这样回应最终结果

check = "B9 09 EE 00 00 00 00 00 00 00 00 00" check1 = "C9 56 fe 00 00 00 00 00 00 00 00 00" ??

2 个答案:

答案 0 :(得分:1)

这样做..

$BaseID = '1234567890';
$BaseIDHex = dechex($BaseID);
echo $v = implode(' ',array_reverse(explode(' ',strtoupper(wordwrap($BaseIDHex, 2, " ", true)))));

Demonstration

答案 1 :(得分:0)

@Shankar Damodaran的代码看起来更干净(+1)但我还是想发布我的版本

$BaseID = '1234567890';
$BaseIDHex = dechex($BaseID);
$result = '';
while(strlen($BaseIDHex) >=2){
    $result = strtoupper($result.substr($BaseIDHex, -2))." ";
    $BaseIDHex = substr($BaseIDHex, 0, strlen($BaseIDHex)-2);
}
echo trim($result);