如何将看起来像十六进制数字的字符串转换为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&lt;$nLen 作为终止测试。这(评论)也没有说明使用单字符变量名的弊端......

以上是关于如何将看起来像十六进制数字的字符串转换为php中的实际十六进制数字?的主要内容,如果未能解决你的问题,请参考以下文章

转换数字+字母字符串[关闭]

将十六进制字符串转换为长字符串

如何使用php和文件上传将图像转换为二进制字符串?

为啥字符串不能像数字一样直接编码

c ++,stl。将带有rgb颜色的字符串转换为3个int值?

在 PHP 中将十六进制转换为 int64