我需要将字符串转换为十六进制。我读到了pack
函数。以下是什么区别?
$hexRepresentation = pack('H','I will be converted to hexa');
和
$hexRepresentation = pack('H*','I will be converted to hexa');
repeater argument上的文档对我来说不是很清楚。
答案 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