PHPにおける文字とバイトの違い及び文字列とバイト変換例


文字:
文字は複数の異なる文字スキームまたはコードページを使用して表される抽象的なエンティティである。例えば、Unicode UTF-16は、文字を16ビットの整数シーケンスとして表し、Unicode UTF-8は同じ文字を8ビットのバイトシーケンスとして表しています。共通言語ライブラリは、Unicode UTF-16(Unicode変換フォーマット、16ビットコード形式)を使用して文字を表します。
phpはUTF-8符号化の下で、一つの漢字は3文字を占め、gbk符号化の下では2文字だけを占める。
バイト(Byte):
バイトは、ネットワークを介して情報を伝送する単位(またはハードディスクやメモリに情報を格納する単位)である。
適用:
テーブルがUTF 8符号化されているデータベースの場合、フィールドは最長10ビットの文字に設定されています。最大保存長はeg:'私は中1'です。
PHP文字列とバイト変換例を見ます。

<?php 
/** 
* byte          
*/
class Bytes { 
/** 
*     String    byte   
* @param $str          
* @param $bytes   byte   
* @author Zikie 
*/
public static function getBytes($string) { 
$bytes = array(); 
for($i = 0; $i < strlen($string); $i++){ 
$bytes[] = ord($string[$i]); 
} 
return $bytes; 
} 
/** 
*         String      
* @param $bytes      
* @param $str       
* @return   String      
*/
public static function toStr($bytes) { 
$str = ''; 
foreach($bytes as $ch) { 
$str .= chr($ch); 
} 
return $str; 
} 
/** 
*     int byte   
* @param $byt   byte   
* @param $val          
* 
*/
public static function integerToBytes($val) { 
$byt = array(); 
$byt[0] = ($val & 0xff); 
$byt[1] = ($val >> 8 & 0xff); 
$byt[2] = ($val >> 16 & 0xff); 
$byt[3] = ($val >> 24 & 0xff); 
return $byt; 
} 
/** 
*                Integer      
* @param $bytes      
* @param $position         
* @return   Integer      
*/
public static function bytesToInteger($bytes, $position) { 
$val = 0; 
$val = $bytes[$position + 3] & 0xff; 
$val <<= 8; 
$val |= $bytes[$position + 2] & 0xff; 
$val <<= 8; 
$val |= $bytes[$position + 1] & 0xff; 
$val <<= 8; 
$val |= $bytes[$position] & 0xff; 
return $val; 
} 
/** 
*     shor    byte   
* @param $byt   byte   
* @param $val          
* 
*/
public static function shortToBytes($val) { 
$byt = array(); 
$byt[0] = ($val & 0xff); 
$byt[1] = ($val >> 8 & 0xff); 
return $byt; 
} 
/** 
*                Short     。 
* @param $bytes      
* @param $position         
* @return   Short      
*/
public static function bytesToShort($bytes, $position) { 
$val = 0; 
$val = $bytes[$position + 1] & 0xFF; 
$val = $val << 8; 
$val |= $bytes[$position] & 0xFF; 
return $val; 
} 
} 
?>