在 PHP 中格式化十六进制字符串

Format Hexadecimal String in PHP

例如我有这个字符串

0A

A001

AC000001

我需要这样的最终格式,无论数字是 1、2、3 还是 6 位数字。

00-00-00-01

在 PHP 中有什么想法吗?

您可以尝试这样的操作:

<?php
    $hexstring = "0A";

    //Pad string to correct lenght "0A" = "0000000A".
    $hexstring = str_pad($hexstring, 8, "0", STR_PAD_LEFT);

    //Split into groups of two. ["00","00","00","0A"].      
    $hexstring = str_split($hexstring, 2);

    //Merge together with hyphens. "00-00-00-0A".
    $hexstring = implode("-", $hexstring);
?>

这段代码也可以压缩成这样:

<?php
    $hexstring = "0A";
    $hexstring = implode("-", str_split(str_pad($hexstring, 8, "0", STR_PAD_LEFT), 2));
?>

此代码将首先将传入的字符串填充到正确的长度。所以无论字符串是 1、2、3、4、5、6、7 还是 8 个字符长,它都将用零填充以变成恰好 8 个字符长。

填充后,字符串将被拆分为每组两个字符,然后用连字符重新连接在一起。