常用类型转换方法工具类
2016-06-05 12:51
288 查看
此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台
功能:十六进制字符串与字节数组互转;字符转字节;Blob类型转字节数组;阿拉伯数字转中文小写;
利用反射机制,将源对象转为目标对象;
类型转换类:ConvertUtil.java
View Code
功能:十六进制字符串与字节数组互转;字符转字节;Blob类型转字节数组;阿拉伯数字转中文小写;
利用反射机制,将源对象转为目标对象;
类型转换类:ConvertUtil.java
package com.ims.common; import java.io.BufferedInputStream; import java.io.IOException; import java.lang.reflect.Method; import java.sql.Blob; /** * 常用类型转换方法工具类 */ public class ConvertUtil { /** * 字节数组转换为十六进制字符串. * @param src * @return 十六进制字符串 */ public static String bytesToHexString(byte[] src){ StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } /** * 十六进制字符串转换为字节数组 * @param hexString 十六进制字符串 * @return */ public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; } /** * 字符转换为字节 * @param c 字符 * @return */ private static byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); } /** * Blob类型转换为字节数组 * @param blob * @return */ public static byte[] blobToBytes(Blob blob) { BufferedInputStream is = null; try { is = new BufferedInputStream(blob.getBinaryStream()); byte[] bytes = new byte[(int) blob.length()]; int len = bytes.length; int offset = 0; int read = 0; while (offset < len && (read = is.read(bytes, offset, len - offset)) >= 0) { offset += read; } return bytes; } catch (Exception e) { return null; } finally { try { is.close(); is = null; } catch (IOException e) { return null; } } } /** * 阿拉伯数字转中文小写 * @param si 阿拉伯数字 * @return 中文小写字符串 */ public static String transition(String si){ String []aa={"","十","百","千","万","十万","百万","千万","亿","十亿"}; String []bb={"一","二","三","四","五","六","七","八","九"}; char[] ch=si.toCharArray(); int maxindex=ch.length; // 字符的转换 String result = ""; // 两位数的特殊转换 if(maxindex==2){ for(int i=maxindex-1,j=0;i>=0;i--,j++){ if(ch[j]!=48){ if(j==0&&ch[j]==49){ result += aa[i]; }else{ result += bb[ch[j]-49]+aa[i]; } } } // 其他位数的特殊转换,使用的是int类型最大的位数为十亿 }else{ for(int i=maxindex-1,j=0;i>=0;i--,j++){ if(ch[j]!=48){ result += bb[ch[j]-49]+aa[i]; } } } return result; } /** * 利用反射机制,将源对象转换为目标对象,属性名一致,且源对象有get方法,目标对象有set方法 * @param src 源对象 * @param target 目标对象 * @return 赋值后的目标对象 */ public static Object autoGetterAndSetter(Object src, Object target) { Method[] sms = src.getClass().getMethods(); // 原始类方法srcMethod Method[] tms = target.getClass().getMethods(); // 目标类方法targetMethod for (Method sm : sms) { if (sm.getName().startsWith("get")) { // 原始类的 getter String attrName = sm.getName().substring(3);// 属性 for (Method tm : tms) {// 遍历目标方法 if (("set" + attrName).equals(tm.getName())) {// 执行目标类的指定attrName的setter try{ if(!(null==sm.invoke(src))){ tm.invoke(target, sm.invoke(src)); } }catch(Exception e){ continue; } } } } } return target; } }
View Code
相关文章推荐
- 2016 计蒜之道 初赛 第一场 青云的服务器密钥
- STS response Demo
- library not found for -lpods
- Eclipse Java代码注释模板的设置
- ios-实战项目笔记总结-商城类-导航控制器
- Android 中使用lambda表达式
- NYOJ 58 最少步数 (DFS)
- Django开发自己的博客系统
- Django开发自己的博客系统
- 26. Remove Duplicates from Sorted Array [easy] (Python)
- Mysql-proxy中的lua脚本编程(一)
- wpf ,只能窗口调整高度,并且设定最小值。
- OutputStream 写入文件(追加方式)
- 聊一聊HTML <!DOCTYPE> 标签
- MySQL索引类型介绍
- 贪吃蛇
- Project Euler 29
- WPF DataGrid 获取选中的当前行某列值
- 工作中使用SOAP UI测试接口
- JDBC连接数据库(1)