ホームページ  >  記事  >  バックエンド開発  >  PHP における文字とバイトの違いと、文字列とバイト変換の詳細な図による説明

PHP における文字とバイトの違いと、文字列とバイト変換の詳細な図による説明

墨辰丷
墨辰丷オリジナル
2018-06-01 09:09:341731ブラウズ

PHP の文字は、さまざまな文字スキームやコード ページを使用して表現できる抽象的なエンティティです。バイトは、ネットワーク上で情報を送信する(またはハードドライブまたはメモリに情報を保存する)ための単位です。この記事では、PHP での文字列とバイトの変換例も紹介します。興味のある方はぜひ一緒にご覧ください。

文字は、さまざまな文字スキームまたはコード ページを使用して変換できます。 で表される抽象的なエンティティ。たとえば、Unicode UTF-16 エンコーディングは文字を 16 ビット整数のシーケンスとして表現しますが、Unicode UTF-8 エンコーディングは同じ文字を 8 ビット バイトのシーケンスとして表現します。共通言語ランタイムは、Unicode UTF-16 (Unicode Transformation Format、16 ビット エンコード) を使用して文字を表現します。

phpでは、UTF-8エンコードでは1つの中国語文字が3文字を占めますが、gbkエンコードでは2文字しか占めません。

バイト (バイト):

バイトは、ネットワーク上で情報を送信する(またはハードディスクやメモリに情報を保存する)単位です。

アプリケーション:データベース内のテーブルが UTF8 でエンコードされ、フィールドが最大 10 文字に設定されている場合、最大ストレージ長は次のようになります: 'I am 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 = &#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; 
} 
} 
?>

概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHPファイルアップロード処理のケースの詳細な説明

PHPリンクリスト操作の簡単なケース


php

データベースキャッシュの実装アイデア


以上がPHP における文字とバイトの違いと、文字列とバイト変換の詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。