PHP相關進制轉換(二進制轉數組、十進制轉16進制、16進制轉字符串)

前段時間一直在和機器對接,涉及各種進制轉換,這裏記一下。

/**
 * 二進制字符串轉數組
 * @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;

}

具體業務可以根據具體需要轉換下

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章