如何将看起来像十六进制数字的字符串转换为php中的实际十六进制数字?
Posted
技术标签:
【中文标题】如何将看起来像十六进制数字的字符串转换为php中的实际十六进制数字?【英文标题】:How do I convert a string that looks like a hex number to an actual hex number in php? 【发布时间】:2011-02-21 10:25:00 【问题描述】:我有一个类似于 "7a"
的字符串,我想将其转换为十六进制数 7A。我尝试过使用 pack 和 unpack,但这给了我每个字符的十六进制表示。
【问题讨论】:
【参考方案1】:将其存储为整数的最简单方法可能是hexdec()
$num = hexdec( '7A' );
【讨论】:
我本来打算推荐 sscanf,但这样更好。 谢谢,这正是我想要的。我之前看到过这个函数,但我误解了它的作用,所以我认为这不是我想要的。 我得到了一个大数字的浮动:-|请考虑使用intval
。【参考方案2】:
一个数字就是一个数字,它不依赖于表示。您可以使用intval()
获取实际值:
$number = intval('7a', 16);
要将数字转换回十六进制字符串,您可以使用dechex()
。
【讨论】:
【参考方案3】:这个可以试试-
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
作为终止测试。这(评论)也没有说明使用单字符变量名的弊端......以上是关于如何将看起来像十六进制数字的字符串转换为php中的实际十六进制数字?的主要内容,如果未能解决你的问题,请参考以下文章