📜  十六进制到十进制 php (1)

📅  最后修改于: 2023-12-03 15:07:19.841000             🧑  作者: Mango

十六进制到十进制 PHP

十六进制和十进制都是表示数字的方式,但是十六进制使用16个数字来表示,比十进制使用的10个数字多出6个,因此在处理一些特定的数据时,十六进制比十进制更为方便。

十六进制转换成十进制

要将十六进制转换成十进制,需要使用PHP中的hexdec函数。这个函数只接受一个参数,即要转换的十六进制数。

$hex = 'a4'; //要转换的十六进制数
$dec = hexdec($hex); //转换成十进制
echo $dec; //输出166

在上述例子中,我们将十六进制数a4转换成了十进制数166

十六进制转换成有符号整数

如果要将十六进制转换成有符号整数,需要使用unpack函数。这个函数使用一个模板字符串和一个二进制字符串作为参数,并返回解包后的数组。

下面的例子中,我们将一个十六进制数ff转换成有符号整数。

$hex = 'ff'; //要转换的十六进制数
$bin = pack('H*', $hex); //将十六进制转换成二进制字符串
$signed = unpack('c', $bin); //解包成有符号整数
echo $signed[1]; //输出-1

在上述例子中,我们使用pack函数将十六进制转换成二进制字符串,再使用unpack函数将二进制字符串解包成有符号整数。

十六进制转换成无符号整数

如果要将十六进制转换成无符号整数,需要使用pack函数和unpack函数。

下面的例子中,我们将一个十六进制数ff转换成无符号整数。

$hex = 'ff'; //要转换的十六进制数
$bin = pack('H*', $hex); //将十六进制转换成二进制字符串
$unsigned = unpack('C', $bin); //解包成无符号整数
echo $unsigned[1]; //输出255

在上述例子中,我们使用pack函数将十六进制转换成二进制字符串,再使用unpack函数将二进制字符串解包成无符号整数。

总结

在PHP中,将十六进制转换成十进制非常简单,只需要使用hexdec函数即可。如果需要将十六进制转换成有符号整数或无符号整数,需要使用pack函数和unpack函数。