前段時間一直在和機器對接,涉及各種進制轉換,這裏記一下。
/**
* 二進制字符串轉數組
* @User yaokai
* @param $hex
* @return array
*/
function hexToArr($hex)
{
$arr = [];
for ($i = 0; $i < strlen($hex); $i++) {
$arr[$i] = strtoupper(bin2hex($hex[$i]));
}
return $arr;
}
/**
* 十進制字符串轉16進制(大寫)
* @User yaokai
* @param $string
* @return string
*/
function strToHex($string)
{
$hex = "";
for ($i = 0; $i < strlen($string); $i++)
$hex .= dechex(ord($string[$i]));
$hex = strtoupper($hex);
return $hex;
}
/**
* 十進制字符串轉16進制
* @User yaokai
* @param $string
* @return string
*/
function strToXHex($string)
{
$hex = "";
for ($i = 0; $i < strlen($string); $i++)
$hex .= dechex(ord($string[$i]));
// $hex = strtoupper($hex);
return $hex;
}
/**
* 16進制轉字符串
* @User yaokai
* @param $hex
* @return string
*/
function hexToStr($hex)
{
$string = "";
for ($i = 0; $i < strlen($hex) - 1; $i += 2)
$string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
return $string;
}
/**
* 十進制轉換成16進制 並指定位數用0補全
* @User yaokai
* @param $dec
* @param int $num
* @return string
*/
function decToHex($dec, $num = 4)
{
$hex = (int)$dec > 15 ? dechex($dec) : '0' . dechex($dec);
for ($i = 0; $i <= $num; $i++) {
if (strlen($hex) < $num) {
$hex .= 0;
}
}
return $hex;
}
具體業務可以根據具體需要轉換下。