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

墨辰丷
Libérer: 2023-03-28 19:34:02
original
1783 Les gens l'ont consulté

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; 
} 
} 
?>
Copier après la connexion

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 :

Explication détaillée du cas de traitement de téléchargement de fichier PHP

Cas simple d'opération de liste chaînée PHP

phpIdées d'implémentation de la mise en cache de base de données

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal