ホームページ  >  記事  >  バックエンド開発  >  PHP の文字列および複数桁の変換関数

PHP の文字列および複数桁の変換関数

WBOY
WBOYオリジナル
2016-07-29 09:00:411011ブラウズ

変換関数

/**
 * [字符串转换为(2,8,16进制)ASCII码]
 * @param  string  $str     [待处理字符串]
 * @param  boolean $encode  [字符串转换为ASCII|ASCII转换为字符串]
 * @param  string  $intType [2,8,16进制标示]
 * @return string  byte_str [处理结果]
 * @author alexander
 */
function strtoascii($str, $encode=true, $intType="2"){
    if($encode == true){
        $byte_array = str_split($str);
        foreach($byte_array as &$value){
            $value = ord($value);
            switch ($intType) {
                case 16:
                    $value = sprintf("%02x", $value);
                    break;
                case 8:
                    $value = sprintf("%03o", $value);
                    break;
                default:
                    $value = sprintf("%08b", $value);
                    break;
            }
        }
        unset($value);
        $byte_str = implode('', $byte_array);
    }
    else{
        $chunk_size = $intType == 16 ? 2 : ($intType == 8 ? 3 : 8);
        $byte_array = chunk_split($str, $chunk_size);
        $byte_array = array_filter(explode("\r\n", $byte_array));
        foreach($byte_array as &$value){
            $fun_name = $intType == 16 ? 'hexdec' : ($intType == 8 ? 'octdec' : 'bindec');
            $value = $fun_name($value);
            $value = chr($value);
        }
        unset($value);
        $byte_str = implode('', $byte_array);
    }
    return $byte_str;
}

PHPのマルチベース

PHP 整数値は、10進数、16進数、8進数、または2進数で表すことができ、オプションの記号(-または+)を前に付けることができます。

2進数: [+-]?0b[01]+

8進数: [+-]?0[1-7]+

10進数: [+-]?[1-9][0-9]* |0

16進数: [+-]?[xX][0-9a-fA-F]+

多進数変換関数:

bindec 2進数から10進数への変換
decbin 10進数を2進数に変換
octdec 8進数を10進数に変換
decoct 10進数を8進数に変換
hexdec hexdec システムを10進数に変換
dechex 10進数を16進数に変換します

上記では、PHP の文字列とマルチベースの変換関数を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPの文字列比較次の記事:PHPの文字列比較