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

PHPにおける文字とバイトの違いと文字列とバイト変換の詳しい解説

墨辰丷
墨辰丷オリジナル
2018-05-31 16:49:561922ブラウズ

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 はレイアウトの画像の幅、高さ、サイズ、画像タイプ、img 属性を取得します

PHP header() の 7 つの使用方法

PHP 名前空間 (ネームスペース)

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

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