在Php

时间:2015-10-26 17:46:45

标签: php

我正在尝试将三种类型的整数(8,16和32位)转换为固定长度的十六进制字符串,以Php。

例如,第三个int是32位无符号。 它的值设置为300.将其转换为十六进制,给我12c。

我想总是从我的int中获得一个固定的六个字符的十六进制字符串,即在这个例子中:00 01 2c ...或00 00 78如果我的int的值是120。 (N.B:我知道32位会克服这个范围)

有没有办法在Php中获取十六进制字符串的长度? 另一个策略是定义hexa String的长度,但我没有找到任何与此相关的内容。

我的目标是能够始终将6个字符大小的十六进制字符串发送到连接的对象。

我使用'dechex()'将我的值转换为十六进制,但我从来不知道输出的字符数,因此无法为其添加特定数量的零(因为我的最终十六进制字符串是6个字符长。)

我已经阅读了有关设置PHP_INT_MAX的内容,但我也读到它会影响我不想要的所有内容。

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:4)

您可以使用str_pad

<?php
$number = 4;
$hexString = dechex($number);
$result = str_pad($hexString,6,"0",STR_PAD_LEFT);
echo($result);
?>

答案 1 :(得分:2)

使用printf()

printf('%06x', 32); // 0000206
//       ^----zero-pad
//        ^---6 char string
//         ^--hex output

答案 2 :(得分:0)

<?php

$number = 300;
$hex_string = chunk_split(sprintf('%06x', $number), 2, ' ');
echo $hex_string;

?>