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 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
yii操作session实例简介
Jul 31 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
javascript运动详解
2015/07/06 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
Python中动态检测编码chardet的使用教程
2017/07/06 Python
Python切片操作实例分析
2018/03/16 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
python 搜索大文件的实例代码
2019/07/08 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
货代行业个人求职简历的自我评价
2013/10/22 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
培训师岗位职责
2015/02/14 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python