java模拟PHP的pack和unpack类


Posted in PHP onApril 13, 2016

本文实例为大家分享了java模拟PHP的pack和unpack类的具体代码,供大家参考,具体内容如下

package qghl.intp.util;
 
import java.io.IOException;
import java.io.InputStream;
 
public class PackUtil{
 
    /**
     * 打包字符串
     * 类似php中pack在java中的实现
     *
     * @param str
     * @return
     */
    public static byte[] pack(String str) {
      int nibbleshift = 4;
      int position = 0;
      int len = str.length() / 2 + str.length() % 2;
      byte[] output = new byte[len];
      for (char v : str.toCharArray()) {
        byte n = (byte) v;
        if (n >= '0' && n <= '9') {
          n -= '0';
        } else if (n >= 'A' && n <= 'F') {
          n -= ('A' - 10);
        } else if (n >= 'a' && n <= 'f') {
          n -= ('a' - 10);
        } else {
          continue;
        }
        output[position] |= (n << nibbleshift);
 
        if (nibbleshift == 0) {
          position++;
        }
        nibbleshift = (nibbleshift + 4) & 7;
      }
 
      return output;
    }
 
    /**
     * 16进制的字符解压 类php中unpack
     *
     * @param is
     * @param len
     * @return
     * @throws IOException
     */
    public static String unpack(InputStream is, int len) throws IOException {
      byte[] bytes = new byte[len];
      is.read(bytes);
      return unpack(bytes);
    }
 
    /***
     * 16进制的字符解压 类php中unpack
     * @param bytes
     * @return
     */
    public static String unpack(byte[] bytes) {
      StringBuilder stringBuilder = new StringBuilder("");
      if (bytes == null || bytes.length <= 0) {
        return null;
      }
      for (int i = 0; i < bytes.length; i++) {
        int v = bytes[i] & 0xFF;
        String hv = Integer.toHexString(v);
        if (hv.length() < 2) {
          stringBuilder.append(0);
        }
        stringBuilder.append(hv);
      }
      return stringBuilder.toString();
    }
  }

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

PHP 相关文章推荐
WINXP下apache+php4+mysql
Nov 25 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
php和nginx交互实例讲解
Sep 24 PHP
PHP Trait功能与用法实例分析
Jun 03 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 PHP
php远程下载类分享
Apr 13 #PHP
Thinkphp和onethink实现微信支付插件
Apr 13 #PHP
PHP MSSQL 分页实例
Apr 13 #PHP
php构造方法中析构方法在继承中的表现
Apr 12 #PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 #PHP
ThinkPHP框架里隐藏index.php
Apr 12 #PHP
PHP 绘制网站登录首页图片验证码
Apr 12 #PHP
You might like
一个捕获函数输出的函数
2007/02/14 PHP
php把session写入数据库示例
2014/02/26 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python新手实现2048小游戏
2015/03/31 Python
python实现音乐下载的统计
2018/06/20 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
在python image 中实现安装中文字体
2020/05/16 Python
python 星号(*)的多种用途
2020/09/21 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
财务部岗位职责
2013/11/19 职场文书
农村党员对照检查材料
2014/09/24 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
明星邀请函
2015/02/02 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python