Maison  >  Article  >  développement back-end  >  La différence entre les caractères et les octets en PHP et explication détaillée de la conversion des chaînes et des octets

La différence entre les caractères et les octets en PHP et explication détaillée de la conversion des chaînes et des octets

墨辰丷
墨辰丷original
2018-05-31 16:49:561866parcourir

En PHP, les caractères sont des entités abstraites qui peuvent être représentées à l'aide de nombreux schémas de caractères ou pages de codes différents. Un octet est une unité permettant de transmettre des informations sur un réseau (ou de stocker des informations sur un disque dur ou en mémoire). Cet article présente également des exemples de conversion de chaînes et d'octets en php à travers des exemples. Les amis intéressés devraient y jeter un œil ensemble

Caractères :

Les personnages sont des entités abstraites qui peuvent être représentées à l'aide de nombreux schémas de caractères ou pages de codes différents. Par exemple, le codage Unicode UTF-16 représente les caractères sous la forme d'une séquence d'entiers de 16 bits, tandis que le codage Unicode UTF-8 représente les mêmes caractères sous la forme d'une séquence d'octets de 8 bits. Le Common Language Runtime utilise Unicode UTF-16 (Unicode Transformation Format, un codage 16 bits) pour représenter les caractères.

PHP en encodage UTF-8, un caractère chinois occupe 3 caractères, et en encodage gbk il n'occupe que 2 caractères.

Octet :

L'octet sert à transmettre des informations via l'unité réseau (ou à stocker des informations sur le disque dur ou la mémoire).

Application :

Si la table de la base de données est encodée en UTF8 et que le champ est défini sur un maximum de 10 caractères, la longueur maximale de stockage est par exemple : "J'ai 1 ans". '

Regardez l'exemple de conversion de chaîne et d'octet PHP ci-dessous

<?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 = &#39;&#39;; 
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; 
} 
} 
?>

Résumé : Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

PHP obtient la largeur, la hauteur, la taille, le type d'image et l'attribut img pour la mise en page

7 façons d'utiliser PHP header()

Espace de noms PHP (espace de noms)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn