如何在php中将一个看起来像十六进制数的字符串转换为实际的十六进制数?

13

我有一个字符串,看起来像这样 "7a",我想把它转换成十六进制数字 7A。我尝试使用 pack 和 unpack,但那只给我每个字符的十六进制表示。

3个回答

25

将其存储为整数最简单的方法可能是使用hexdec()函数。

$num = hexdec( '7A' );

1
我本来想建议使用sscanf,但这个更好。 - Artefacto
谢谢,这正是我想要的。我之前看到过这个函数,但我误解了它的作用,所以我认为它不是我想要的。 - cskwrd
1
我在一个大数上得到了一个浮点数 :-| 考虑使用 intval - Pavel Vlasov

9

数字就是数字,它不会因表示方式而改变。您可以使用intval()函数获取实际值:

$number = intval('7a', 16); 

要将数字转换回十六进制字符串,您可以使用dechex()函数。


0

这可以尝试 -

function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
    $hex .= dechex(ord($string[$i]));
}
return $hex;
}

这样做是行不通的:您正在对dechex()返回的数字进行字符串连接,结果的$hex值将是您传入的相同字符串。此外,由于strlen($string)在循环测试语句中,它将在每次循环迭代时被评估。最好在循环外部分配$nLen=strlen($string),然后使用$i<$nLen作为终止测试。这(注释)也没有提到使用单个字符变量名称的弊端... - FKEinternet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接