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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php抓取页面的几种方法详解
Jun 17 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
php利用gd库为图片添加水印
Nov 09 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
PHP判断是否是json字符串
Apr 01 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
JavaScript插入动态样式实现代码
2012/02/22 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
Python实现文件按照日期命名的方法
2015/07/09 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
super关键字的用法
2012/04/10 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
《长征》教学反思
2014/04/27 职场文书
优秀家长事迹材料
2014/05/17 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
中层干部考核评语
2015/01/04 职场文书
承诺书模板大全
2015/05/04 职场文书
nginx静态资源的服务器配置方法
2022/07/07 Servers