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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
php 魔术方法详解
Nov 11 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP整合PayPal支付
Jun 11 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
利用python将图片转换成excel文档格式
2017/12/30 Python
详解Python if-elif-else知识点
2018/06/11 Python
详解django中使用定时任务的方法
2018/09/27 Python
详解如何设置Python环境变量?
2019/05/13 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python如何使用函数做字典的值
2019/11/30 Python
pytorch中的inference使用实例
2020/02/20 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python爬取音频下载的示例代码
2020/10/19 Python
python如何构建mock接口服务
2021/01/28 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
幼儿园义卖活动方案
2014/01/17 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
文明寝室标语
2014/06/13 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
入党介绍人意见2015
2015/06/01 职场文书
2019年最新借条范本!
2019/07/08 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript