import java.math.BigInteger;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Codec工具类
* Integer.toHexString(),Long.toHexString(),BigInteger.toString(16)均无前导0,和Hex编码不一致,所以不直接用
*/
public class CodecUtil {/**
* 将字节数组编码为HEX编码的字符串
*/
public static String encodeHex(byte[] dataBytes) {
String dataString = null;
dataString = new String(Hex.encodeHex(dataBytes));
return dataString;
} /**
* 将HEX编码的字符串解码为字节数组
*/
public static byte[] decodeHex(String dataString) {
byte[] dataBytes = null;
if (dataString != null) {
try {
dataBytes = Hex.decodeHex(dataString.toCharArray());
} catch (DecoderException e) {
logger.warn(e, e);
}
}
return dataBytes;
} /**
* 以十六进制的无符号整数形式返回一个byte参数的字符串表示形式(有前导0)
*/
public static String toHexString(byte b) {
String dataString = null;
dataString = encodeHex(toByteArray(b));
return dataString;
} /**
* 以十六进制的无符号整数形式返回一个short参数的字符串表示形式(有前导0)
*/
public static String toHexString(short s) {
String dataString = null;
dataString = encodeHex(toByteArray(s));
return dataString;
} /**
* 以十六进制的无符号整数形式返回一个int参数的字符串表示形式(有前导0)
*/
public static String toHexString(int i) {
String dataString = null;
dataString = encodeHex(toByteArray(i));
return dataString;
} /**
* 以十六进制的无符号整数形式返回一个long参数的字符串表示形式(有前导0)
*/
public static String toHexString(long l) {
String dataString = null;
dataString = encodeHex(toByteArray(l));
return dataString;
} /**
* 以十六进制的无符号整数形式返回一个BigInteger参数的字符串表示形式(有前导0)
*/
public static String toHexString(BigInteger b) {
String dataString = null;
dataString = encodeHex(toByteArray(b));
return dataString;
} /**
* 返回一个字节数组,该数组包含此byte的二进制补码表示形式
*/
public static byte[] toByteArray(byte b) {
byte[] dataBytes = null;
dataBytes = new byte[1];
dataBytes[0] = b;
return dataBytes;
} /**
* 返回一个字节数组,该数组包含此short的二进制补码表示形式
*/
public static byte[] toByteArray(short s) {
byte[] dataBytes = null;
dataBytes = new byte[2];
dataBytes[0] = (byte) ((s >>> 8) & 0xff);
dataBytes[1] = (byte) (s & 0xff);
return dataBytes;
} /**
* 返回一个字节数组,该数组包含此int的二进制补码表示形式
*/
public static byte[] toByteArray(int i) {
byte[] dataBytes = null;
dataBytes = new byte[4];
dataBytes[0] = (byte) ((i >>> 24) & 0xff);
dataBytes[1] = (byte) ((i >>> 16) & 0xff);
dataBytes[2] = (byte) ((i >>> 8) & 0xff);
dataBytes[3] = (byte) (i & 0xff);
return dataBytes;
} /**
* 返回一个字节数组,该数组包含此long的二进制补码表示形式
*/
public static byte[] toByteArray(long l) {
byte[] dataBytes = null;
dataBytes = new byte[8];
dataBytes[0] = (byte) ((l >>> 56) & 0xff);
dataBytes[1] = (byte) ((l >>> 48) & 0xff);
dataBytes[2] = (byte) ((l >>> 40) & 0xff);
dataBytes[3] = (byte) ((l >>> 32) & 0xff);
dataBytes[4] = (byte) ((l >>> 24) & 0xff);
dataBytes[5] = (byte) ((l >>> 16) & 0xff);
dataBytes[6] = (byte) ((l >>> 8) & 0xff);
dataBytes[7] = (byte) (l & 0xff);
return dataBytes;
} /**
* 返回一个字节数组,该数组包含此BigInteger的二进制补码表示形式
*/
public static byte[] toByteArray(BigInteger b) {
byte[] dataBytes = null;
dataBytes = b.toByteArray();
return dataBytes;
} /**
* 根据EsmClass返回TpUdhi
* @return
*/
public static int getTpUdhiFromEsmClass(int esmClass) {
int tpUdhi = (esmClass & 0x40) >> 6;
return tpUdhi;
} /**
* 根据TpUdhi返回EsmClass
*/
public static int getEsmClassFromTpUdhi(int tpUdhi) {
int esmClass = tpUdhi << 6;
return esmClass;
} }

Codec工具类的更多相关文章

  1. Rhino+envjs-1.2.js 在java运行网站js 工具类

    java爬虫遇到个页面加密的东西,找了些资料学习学习 做了个java运行js的工具类,希望对大家有用,其中用到client(获取js)可以自行换成自己的client.主要是用了 Rhino就是Java ...

  2. Mina工具类v1.5

    package com.cucpay.fundswap.util; import java.net.InetSocketAddress; import java.nio.charset.Charset ...

  3. 加密工具类 - CryptoUtils.java

    加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载  - CryptoUtils.java.commons-io-2.4.jar.commons-code ...

  4. JSP图片上传 公共工具类

    需要jsmartcom_zh_CN.jar支持. 下载地址: http://files.cnblogs.com/simpledev/jsmartcom_zh_CN.rar <%@page imp ...

  5. Java操作图片的工具类

    操作图片的工具类: import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.a ...

  6. Apache Commons 工具类介绍及简单使用

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  7. Java图片工具类,完成图片的截取和任意缩放

    package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Renderin ...

  8. 数据持久化之SP的优化—送工具类

    第一点:sp存储的是键值对 getSharedPreferences 第一个參数是你保存文件的名字,第个是保存的模式一般能够默觉得0 先看普通 使用SP 存储String类型字符串吧 SharedPr ...

  9. linkin大话数据结构--apache commons工具类

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动. 一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆ge ...

随机推荐

  1. Codeforces Round #363 (Div. 1) C. LRU

    题意: n个数,长度为k的缓存,每次询问,每个数以pi的概率被选,如果不在缓存区则加入,如果缓存区满了,则第一个进缓存的出来,问10^100次询问以后每个数在缓存的概率 思路: 状压DP,看了hzwe ...

  2. Tkinter教程之Canvas篇(2)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811888 '''Tkinter教程之Canvas篇(2)''''''9.创建item的tag ...

  3. lamda表达式相关知识

    lamda表达式写法 dt = datado.SelectDalMeath(sqlStr.ToString()); var x = (from r in dt.AsEnumerable() selec ...

  4. Another mysql daemon already running with the same unix socket

    在国外网站发现的解决方法. 原因多个Mysql进程使用了同一个socket. 两个方法解决: 第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了. 第二个直接 ...

  5. ResolverService跨子网的广播问题

    ResolverService在广播请求时,需要借助McastTransport,而McastTransport利用java.net.MulticastSocket进行收发,java.net.Mult ...

  6. thymeleaf中的th:each用法

    一.th:eath迭代集合用法: <table> <thead> <tr> <th>序号</th> <th>用户名</th ...

  7. [iOS 多线程 & 网络 - 2.8] - 检测网络状态

    A.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 ...

  8. SPOJ 375 (树链剖分 - 边权剖分 - 修改单边权)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28982#problem/I 给你一棵有边权的树,有两个操作:一个操作是输出l到 ...

  9. MAT(2)安装Memory Analyzer

    http://www.eclipse.org/mat/ 两大功能: 1.find memory leaks 2.reduce memory consumption 安装步骤: 1. 打开 eclips ...

  10. C++ API设计

    <C++ API设计> 基本信息 作者: (美)Martin Reddy    译者: 刘晓娜 臧秀涛 林健 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:97871153 ...