在 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 个字符长。
填充后,字符串将被拆分为每组两个字符,然后用连字符重新连接在一起。
例如我有这个字符串
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 个字符长。
填充后,字符串将被拆分为每组两个字符,然后用连字符重新连接在一起。