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 setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
初品cakephp 入门基础
Feb 16 PHP
php 注释规范
Mar 29 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
php similar_text()函数的定义和用法
May 12 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
php操作access数据库的方法详解
Feb 22 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
使用express来代理服务的方法
2019/06/21 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
实例Python处理XML文件的方法
2015/08/31 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
Python 学习教程之networkx
2019/04/15 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
化工专业个人的求职信范文
2013/11/28 职场文书
2014的自我评价
2014/01/13 职场文书
车辆工程专业求职信
2014/04/28 职场文书
小班上学期评语
2014/05/05 职场文书
检讨书范文500字
2015/01/28 职场文书
主题班会开场白
2015/06/01 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Python中的 enumerate和zip详情
2022/05/30 Python