PHP中字符与字节的区别及字符串与字节转换示例


Posted in PHP onOctober 15, 2016

字符:

字符是可使用多种不同字符方案或代码页来表示的抽象实体。例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字节序列。公共语言运行库使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)表示字符。

php在UTF-8编码下,一个汉字占3个字符,gbk编码下只占2个字符。

字节(Byte):

字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。

应用:

如果数据库中表为UTF8编码,则其中字段设置为最长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; 
} 
} 
?>
PHP 相关文章推荐
php split汉字
Jun 05 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
php懒人函数 自动添加数据
Jun 28 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
解析php中反射的应用
Jun 18 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
php语言的7种基本的排序方法
Dec 28 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 #PHP
PHP云打印类完整示例
Oct 15 #PHP
PHP实现统计在线人数功能示例
Oct 15 #PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 #PHP
PHP实现导出excel数据的类库用法示例
Oct 15 #PHP
PHP数组操作简单案例分析
Oct 15 #PHP
PHP链表操作简单示例
Oct 15 #PHP
You might like
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
PHP修改session_id示例代码
2014/01/08 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
vue 中filter的多种用法
2018/04/26 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
html5 input属性使用示例
2013/06/28 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
生日邀请函范文
2014/01/13 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
推广普通话标语
2014/06/27 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
逃课检讨书范文
2015/05/06 职场文书
青年文明号创建口号大全
2015/12/25 职场文书