java格式处理工具类
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* java格式处理工具类
*
* @author lay at 2014年8月7日09:12:20
*
* @version 1.0
*/
public final class EncodingUtil {
/**
* 将十进制整数转为byte数组(2字节) 仅限于2字节以内的十进制整数
*
* @param value
* 要转换的值
* @param flag
* 顺序选择,true高位在前,低位在后
* @return
*/
public static byte[] int2Bytes2(int value, boolean flag) {
if (flag) {
byte c[] = { (byte) ((value >>> 8) & 0xff), (byte) (value & 0xff) };
return c;
} else {
byte c[] = { (byte) (value & 0xff), (byte) ((value >>> 8) & 0xff) };
return c;
}
}
/**
* 将十进制整数转为byte数组(3字节) 仅限于3字节以内的十进制整数
*
* @param value
* 要转换的值
* @param flag
* 顺序选择,true高位在前,低位在后
* @return
*/
public static byte[] int2Bytes3(int value, boolean flag) {
if (flag) {
byte[] b = { (byte) ((value >>> 16) & 0xff), (byte) (value >>> 8),
(byte) (value & 0xff) };
return b;
} else {
byte[] b = { (byte) (value & 0xff), (byte) (value >>> 8),
(byte) ((value >>> 16) & 0xff) };
return b;
}
}
/**
* 将十进制整数转为byte数组(四字节)
*
* @param value
* 要转换的值
* @param flag
* 顺序选择,true高位在前,低位在后
* @return
*/
public static byte[] int2Bytes4(int value, boolean flag) {
byte[] src = new byte[4];
if (flag) {
src[0] = (byte) ((value >>> 24) & 0xFF);
src[1] = (byte) ((value >>> 16) & 0xFF);
src[2] = (byte) ((value >>> 8) & 0xFF);
src[3] = (byte) (value & 0xFF);
} else {
src[3] = (byte) ((value >>> 24) & 0xFF);
src[2] = (byte) ((value >>> 16) & 0xFF);
src[1] = (byte) ((value >>> 8) & 0xFF);
src[0] = (byte) (value & 0xFF);
}
return src;
}
/**
* 将byte数组转为十进制整数(四字节) 数组长度大于4时,按长度为4处理
*
* @param src
* 高位在前的长度为4的byte数组
* @return
*/
public static int byte2Int(byte[] src) {
int value;
switch (src.length) {
case 0:
value = 0;
break;
case 1:
value = (int) (src[0] & 0xFF);
break;
case 2:
value = (int) ((src[1] & 0xFF) | ((src[0] & 0xFF) << 8));
break;
case 3:
value = (int) ((src[2] & 0xFF) | ((src[1] & 0xFF) << 8) | ((src[0] & 0xFF) << 16));
break;
case 4:
value = (int) ((src[3] & 0xFF) | ((src[2] & 0xFF) << 8)
| ((src[1] & 0xFF) << 16) | ((src[0] & 0xFF) << 24));
break;
default:
value = (int) ((src[3] & 0xFF) | ((src[2] & 0xFF) << 8)
| ((src[1] & 0xFF) << 16) | ((src[0] & 0xFF) << 24));
break;
}
return value;
}
/**
* 将byte转为十六进制字符串,不会补0
*
* @param src
* 高位在前的长度为4的byte数组
* @return
*/
public static String byte2Hex(byte b) {
return Integer.toHexString(0xFF & b).toUpperCase();
}
/**
* 十六进制字符串前面补0
*
* @param hex
* 要补0的字符串
* @param len
* 补0后的长度
* @return
*/
public static String addZeroAtStart(String hex, int len) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < len - hex.length(); i++) {
sb.append("0");
}
sb.append(hex);
return sb.toString().toUpperCase();
}
/**
* 十六进制字符串后面补0
*
* @param hex
* 要补0的字符串
* @param len
* 补0后的长度
* @return
*/
public static String addZeroAtEnd(String hex, int len) {
StringBuffer sb = new StringBuffer();
sb.append(hex);
for (int i = 0; i < len - hex.length(); i++) {
sb.append("0");
}
return sb.toString().toUpperCase();
}
/**
* 1字节16进制字符串转byte
*
* @param value
* @return
*/
public static byte hex2Byte(String value) {
return (byte) (Integer.parseInt(value, 16) & 0xff);
}
/**
* 将16进制string当做一个整数转为byte数组
*
* @param crc
* @return
*/
public static byte[] hexs2Bytes2(String hex) {
BigInteger bi = new BigInteger(hex, 16);
return bi.toByteArray();
}
/**
* 将byte数组当成一个整数转换为16进制string
*
* @param bArray
* @return
*/
public static String bytes2Hexs2(byte[] bArray) {
BigInteger bi = new BigInteger(bArray);
return addZeroAtStart(bi.toString(16), bArray.length * 2);
}
/**
* 将byte数组当成字符数组转换为16进制string
*
* @param bArray
* @return
*/
public static String bytes2Hexs(byte[] bArray) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < bArray.length; i++) {
sb.append(addZeroAtStart(byte2Hex(bArray[i]), 2));
}
return sb.toString();
}
/**
* 把可序列化对象转换成字节数组
*
* @param s
* @return
* @throws IOException
*/
public static final byte[] object2Bytes(Serializable s) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream ot = new ObjectOutputStream(out);
ot.writeObject(s);
ot.flush();
ot.close();
return out.toByteArray();
}
/**
* 将时间转换为4字节byte数组
*
* @param time
* @return
* @throws ParseException
*/
public static byte[] time2Bytes(String time) throws ParseException {
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
Calendar c = Calendar.getInstance();
c.setTime(date);
int as = (c.get(Calendar.HOUR_OF_DAY) * 60 + c.get(Calendar.MINUTE))
* 60 + c.get(Calendar.SECOND);
String hex = addZeroAtStart(Integer.toHexString(as), 8);
byte b[] = new byte[4];
for (int i = 0; i < 4; i++) {
b[i] = (byte) hex2Byte(hex.substring(i * 2, i * 2 + 2));
}
return b;
}
/**
* 日期转长度为3的byte数组对应年月日
*
* @param d
* @return
*/
public static byte[] date2Bytes(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR) % 100;
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
byte[] b = new byte[3];
b[0] = (byte) (year & 0xff);
b[1] = (byte) (month & 0xff);
b[2] = (byte) (day & 0xff);
return b;
}
/**
* 处理Get请求产生的乱码 处理失败返回""
*
* @param temp
* 乱码
* @return 正确编码的字符串
*/
public static String string2GBK(String temp) {
try {
byte s[] = temp.getBytes("iso-8859-1");
return new String(s, "GBK");
} catch (Exception e) {
return "";
}
}
/**
* byte数组转以BCD码格式转为字符串
*
* @param bytes
* BCD码
* @return 10进制串
*/
public static String bytes2BCD(byte[] bytes) {
StringBuffer temp = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
temp.append((byte) ((bytes[i] & 0xf0) >>> 4));
temp.append((byte) (bytes[i] & 0x0f));
}
return temp.toString();
}
/**
* BCD码格式字符串转为byte数组
*
* @param bytes
* BCD码
* @return 10进制串
*/
public static byte[] BCDString2Bytes(String str) {
int len = str.length();
if (len % 2 != 0) {
str = "0" + str;
}
byte[] b = new byte[str.length() / 2];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) (((((str.charAt(i * 2) - '0') << 4) & 0xf0) | ((str
.charAt(i * 2 + 1) - '0') & 0x0f)) & 0xff);
}
return b;
}
/**
* BCD码格式字符串转为byte数组
*
* @param bytes
* BCD码
* @return 10进制串
*/
public static String bytes2BCDString(byte[] b) {
return bytes2Hexs(b);
}
/**
* 10进制串转为BCD码
*
* @param asc
* 10进制串
* @return BCD码
*/
public static byte[] des2BCD(String des) {
int len = des.length();
if (len % 2 != 0) {
des = "0" + des;
}
byte[] b = new byte[des.length() / 2];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) ((((des.charAt(i * 2) - '0') << 4) & 0xf0) | ((des
.charAt(i * 2 + 1) - '0') & 0x0f));
}
return b;
}
/**
* 10进制串转为BCD码
*
* @param bcd
* BCD码byte数组
* @return BCD码
*/
public static int BCD2Des(byte[] bcd) {
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < bcd.length; i++) {
sb.append((char) (((bcd[i] >>> 4) & 0x0f) + '0'));
sb.append((char) ((bcd[i] & 0x0f) + '0'));
}
return Integer.parseInt(sb.toString());
}
/**
* 将16进制字符串每两个字当做一个字节转换为byte数组
*
* @param hex
* @return
*/
public static byte[] hexs2Bytes(String hex) {
int len = hex.length();
if (len % 2 != 0) {
hex = "0" + hex;
}
byte[] result = new byte[len / 2];
for (int i = 0; i < result.length; i++) {
result[i] = hex2Byte(hex.substring(i * 2, i * 2 + 2));
}
return result;
}
/**
* char数组转16进制字符串
*
* @param c
* @return
*/
public static final String chars2Hexs(char[] c) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < c.length; i++) {
sb.append(addZeroAtStart(Integer.toHexString((int) c[i])
.toUpperCase(), 2));
}
return sb.toString();
}
/**
* 16进制字符串转char数组
*
* @param c
* @return
*/
public static final char[] Hexs2Chars(String str) {
int len = str.length();
if (len % 2 != 0) {
str = "0" + str;
}
char[] c = new char[str.length() / 2];
for (int i = 0; i < str.length() / 2; i++) {
c[i] = (char) hex2Des(str.substring(i * 2, i * 2 + 2));
}
return c;
}
/**
* 把字节数组转换为对象
*
* @param bytes
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
public static final Object bytes2Object(byte[] bytes) throws IOException,
ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
ObjectInputStream oi = new ObjectInputStream(in);
Object o = oi.readObject();
oi.close();
return o;
}
/**
* 10进制转16进制
*
* @param num
* @return
*/
public static final String des2Hexs(int num) {
return Integer.toHexString(num).toUpperCase();
}
/**
* 16进制转10进制
*
* @param s
* @return
*/
public static int hex2Des(String s) {
return Integer.parseInt(s, 16);
}
/**
* 16进制单字节转char
*
* @param hex
* @return
*/
public static char hex2Char(String hex) {
char c = (char) Integer.parseInt(hex, 16);
return c;
}
/**
* 16进制字符以字节为单位进行分割
*
* @param hex
* 16进制字符串,必须为整数个字节
* @return
*/
public static String[] hexs2hexs(String hex) {
String[] strs = new String[hex.length() / 2];
for (int i = 0; i < hex.length() / 2; i++) {
strs[i] = hex.substring(0 * 2, 0 * 2 + 1);
}
return strs;
}
/**
* 将字符串转为16进制字符串
*
* @param asc
* @return
*/
public static String string2Hexs(String strs) {
String str = String.valueOf(strs);
byte[] b = str.getBytes();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
sb.append(addZeroAtStart(byte2Hex(b[i]), 2));
}
return sb.toString();
}
}
java格式处理工具类的更多相关文章
- 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
- java 解析excel工具类
java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)
系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
随机推荐
- ASP.NET MVC轻教程 Step By Step 8——路由
在前面的教程里,细心的你可能会有个疑问,就是地址栏输入/Home/Write就可以进入留言页面.无论是静态HTML还是ASP/ASP.NET.PHP,URL都是和某个页面相关.比如假设有个URL是“w ...
- 学习Swift -- 构造器(中)
构造器(中) 值类型的构造器代理 构造器可以通过调用其它构造器来完成实例的部分构造过程.这一过程称为构造器代理,它能减少多个构造器间的代码重复. 构造器代理的实现规则和形式在值类型和类类型中有所不同. ...
- 从MVC到前后端分离
摘要:MVC模式早在上个世纪70年代就诞生了,直到今天它依然存在,可见生命力相当之强.MVC模式最早用于Smalltalk语言中,最后在其它许多开发语言中都得到了很好的应用,例如,Java中的Stru ...
- 根据http协议传送数据
发送的内容: [50 4f 53 54 20 2f 64 65 78 2f 66 69 72 65 70 6f 77 65 72 20 48 54 54 50 2f 31 2e 31 0d 0a 43 ...
- C#Lambda表达式学习日记
Lambda表达式只是用更简单的方式来写匿名方法,彻底简化了对.NET委托类型的使用. 现在,如果我们要使用泛型 List<> 的 FindAll() 方法,当你从一个集合去提取子集时,可 ...
- [BZOJ 3489] A simple rmq problem 【可持久化树套树】
题目链接:BZOJ - 3489 题目分析 “因为是OJ上的题,就简单点好了.”——出题人 真的..好..简单... 首先,我们求出每个数的前一个与它相同的数的位置,即 prev[i] ,如果前面没有 ...
- 【UVA11478】Halum (最短路解差分约束)
题目: Sample Input2 11 2 102 11 2 -103 31 2 42 3 23 1 54 52 3 44 2 53 4 23 1 01 2 -1Sample OutputInfin ...
- 执行计划之CONCATENATION
CREATE TABLE T_CONCAT (ID NUMBER, NAME VARCHAR2(30), TYPE VARCHAR2(30)); INSERT INTO T_CONCAT SELECT ...
- 在C#中使用WIA获取扫描仪数据
WIA(Windows Image Acquire,最新版本2.0)是Windows中一组从设备中捕获图像的标准API集合,它可以从设备(例如扫描仪.数码相机)中获取静态图像,以及管理这些设备.它既是 ...
- eclipse报错 com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 转
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了 ...