包中的转发器参数是什么?

时间:2017-01-27 07:42:19

标签: php hex pack

我需要将字符串转换为十六进制。我读到了pack函数。以下是什么区别?

$hexRepresentation = pack('H','I will be converted to hexa');

$hexRepresentation = pack('H*','I will be converted to hexa');

repeater argument上的文档对我来说不是很清楚。

1 个答案:

答案 0 :(得分:0)

1)如果你想将字符串二进制转换为十六进制 - 有一个更好的功能:bin2hex

2)pack函数可以将数据转换为二进制字符串。我想你的意思是 - unpack

正如文档中所述 - PHP的pack \ unpack函数是Perl的pack \ unpack的一个端口。

此功能的行为取决于您使用的格式。
对于h和H格式包:

  

重复计数的A *使用输入字段的所有字符。

您可以查看perl的文档here

示例:

<?php

$string='I will be converted to hexa';
var_dump(unpack('H10',$string));
//array(1) {
//  [1]=>
//  string(10) "492077696c"
//}
var_dump(unpack('H*',$string));
//array(1) {
//  [1]=>
//  string(54) "492077696c6c20626520636f6e76657274656420746f2068657861"
//}
var_dump(bin2hex($string));
//string(54) "492077696c6c20626520636f6e76657274656420746f2068657861"

此外,您可以在此处自行试用:https://3v4l.org/a4BVi