ホームページ  >  記事  >  バックエンド開発  >  PHP bcd コード圧縮 - 10 進数を 16 進数のデータに圧縮する_PHP チュートリアル

PHP bcd コード圧縮 - 10 進数を 16 進数のデータに圧縮する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:44:211991ブラウズ

PHP BCD コード圧縮 - 10 進数を 16 進数データに圧縮するに関する記事を見てみましょう。この記事がすべての学生に役立つことを願っています。

例、PHP BCDコード圧縮 - 10進数を16進数データに圧縮します

コードは次のとおりです コードをコピー
/*
PHP bcd コード圧縮 - 10 進数を 16 進数のデータに圧縮します
たとえば、0091 圧縮 0x00 0x91
*/
$string = '0091'; $bytes = バイト::getBytes($string); print_r($バイト); /*
配列
(

[0] => 48

[1] => 48

[2] => 57

[3] => 49
)
*/
$asc=Bytes::AscToHex($bytes,4);
// 4 ビットを 2 ビットに圧縮
print_r($asc); /*
配列
(

[0] => 0

[1] => 145
)
*/
エコーバイト::toStr($asc); /*
0091
*/
$hex=Bytes::HexToAsc($asc,2);
//逆の操作で 2 ビットを 4 ビットに復元します
print_r($hex)
/*
配列
(

[0] => 48

[1] => 48

[2] => 57

[3] => 49
)
*/
?>


例、10進数を16進数のデータに圧縮する

代码如下 复制幣

/**

*php BCDコード圧縮

* 10 進数を 16 進数のデータに圧縮します

* @author phpff.com

※2011年7月15日作成

*/
クラスバイト {
   
/**

* 文字列をバイト配列に変換します

* @param $str 変換される文字列

* @param $bytes ターゲットバイト配列

* @author phpff.com

*/
    パブリック静的関数 getBytes($string) {
 
        $bytes = 配列();
        for($i = 0; $i              $bytes[] = ord($string[$i]);
        }
        $バイトを返します。
    }
 
   
/**

* バイト配列を文字列型データに変換します

* @param $bytes バイト配列

* @param $str ターゲット文字列

* @return 文字列型データ

*/
 
    パブリック静的関数 toStr($bytes) {
        $str = '';
        foreach($ch としての $bytes) {
            $str .= bin2hex(chr($ch));
        }
 
           $str を返します。
    }
 
   
/**

* ASCコードを16進数データに変換します

* @param $asc asc 数値文字列

* @param $AscLen 変換される文字列の長さ

* @return 16 進配列

* @author phpff.com

*/
     パブリック静的関数 AscToHex( $asc, $AscLen) {
        $i=0;
        $Hex=配列();
        for($i = 0; 2*$i <$AscLen; $i++)
        {
           
/*A:0x41(0100 0001),a:0x61(0110 0001),右移4位後都是0001,加0x90等0xa*/
            $Hex[$i] = (chr($asc[2*$i]) << 4);
            if (!(chr($asc[2*$i]) >= '0' && chr($asc[2*$i])                 $Hex[$i] += 0x90;
            }
 
            if(2*$i+1 >= $AscLen){
                壊す;
            }
 
            $Hex[$i] |= (chr($asc[2*$i+1]) & 0x0f);
            if (!(chr($asc[2*$i+1]) >= '0' && chr($asc[2*$i+1])                 $Hex[$i] += 0x09;
            }
 
        }
        $16 進数を返します。
    }
    
/**
    
* 将16制のデータ转荢ascコード化
    
* @param $Hex 16进制数组
    
* @param $HexLen 16进制数组长度
    
* @return asc数组
    
* @author phpff.com
    
*/
    パブリック静的関数 HexToAsc($Hex, $HexLen) {
        $i=0;
        $Temp=0;
        for($i = 0; $i         {
            $Temp = ($Hex[$i] & 0xf0) >> 4;
            if ($Temp                 $Asc[2*$i] = (0x30 + $Temp);
            }その他{
                $Asc[2*$i] = (0x37 + $Temp);
            }
 
            $Temp = $Hex[$i] & 0x0f;
            if ($Temp                 $Asc[2*$i+1] = (0x30 + $Temp);
            }その他{
                $Asc[2*$i+1] = (0x37 + $Temp);
            }
 
        }
        $Asc を返します。
    }
 
}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633105.html技術記事以下では、php bcdコード圧縮 - ビット圧縮をビットデータに変換する例について、一緒に見ていきます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。