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文字列とバイト変換例を見ます。
文字は複数の異なる文字スキームまたはコードページを使用して表される抽象的なエンティティである。例えば、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;
}
}
?>