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原理之异常机制
Aug 21 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php常用的url处理函数总结
Nov 19 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
PHP可变函数学习小结
Nov 29 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
PHP中number_format()函数的用法讲解
Apr 08 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 PHP
PHP高并发和大流量解决方案整理
Mar 09 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
PHP5函数小全(分享)
2013/06/06 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
JavaScript 实现??打印?理
2007/04/28 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
Angular5中状态管理的实现
2018/09/03 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
python小白切忌乱用表达式
2020/05/29 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
网络编辑岗位职责
2014/03/18 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
房地产开发项目建议书
2014/05/16 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书