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 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
PHP新手上路(十二)
Oct 09 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP图片上传代码
Nov 04 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
Smarty变量用法详解
May 11 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP数组基本用法与知识点总结
Jun 02 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
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python shelve模块实现解析
2019/08/28 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
科室工作个人总结的自我评价
2013/10/29 职场文书
公司承诺书怎么写
2014/05/24 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
门卫管理制度范本
2015/08/05 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
七年级作文之英语老师
2019/10/28 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
Kubernetes控制节点的部署
2022/04/01 Servers