[原创]PHP - 十六进制与中文字符串之间的转换 代码

Skiy 11月前 108

最近在做物联网方面的东西,所以跟进制打交道很频繁。

    /**
     * 十六进制转中文
     * @param string $hex
     * @param string $to_encoding 编码(默认GBK)
     * @return string
     */
    public static function hex2Str(string $hex, string $to_encoding = 'gbk') : string {
        $string = '';
        for ($i = 0; $i < strlen($hex) - 1; $i += 2) {
            $string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
        }
        $to_encoding = strtolower($to_encoding);
        ($to_encoding == 'gbk') && ($string = mb_convert_encoding($string, 'UTF-8', 'GBK'));
        return $string;
    }
    /**
     * 中文转十六进制
     * @param string $str
     * @param string $to_encoding 转编码(默认UTF-8)
     * @param string $from_encoding 从编码(默认UTF-8)
     * @return string
     */
    public static function str2Hex(string $str, string $to_encoding = 'utf-8', string $from_encoding = 'utf-8') : string {
        $string = '';
        $to_encoding = strtolower($to_encoding);
        $from_encoding = strtolower($from_encoding);
        ($to_encoding == $from_encoding) || ($str = mb_convert_encoding($str, $to_encoding, $from_encoding));
        for ($i = 0; $i < strlen($str); $i++) {
            $string .= dechex(ord($str[$i]));
        }
        return $string;
    }


最新回复 (0)
返回
发新帖