【util】用java实现16进制和byte,string的相互转换以及格式化16进制
来源:互联网 发布:电脑控制手机桌面软件 编辑:程序博客网 时间:2024/05/22 00:25
最近程序用到的16进制比较多,所以写了一个16进制的util,供大家参考
工具类
package utils;import java.io.UnsupportedEncodingException;/** * * @author qq1623299667 * */public class HexUtil {/** * 将任何字符串按指定编码输出成特定格式的16进制 * @param string * @param charsetName * @return */public static String stringToHexString(String string,String charsetName) {StringBuilder sb = new StringBuilder();try {for (int i = 0; i < string.length(); i++) {char ch = string.charAt(i);byte[] bytes = String.valueOf(ch).getBytes(charsetName);String hex = bytesToHexString(bytes);sb.append(hex);}} catch (UnsupportedEncodingException e) {e.printStackTrace();}return sb.toString();}/** * 将字节码数组按16进制的方式保存为字符串 * @param bytes * @return */public static String bytesToHexString(byte[] bytes){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { int num = bytes[i] & 0xFF; String hex = Integer.toHexString(num); if (hex.length() < 2) { sb.append(0); } sb.append(hex); } return sb.toString();}/** * 将16进制的字符串转换成byte * @param hexString * @return */public static byte[] hexStringTobytes(String hexString){StringBuilder sb = new StringBuilder();for(int i=0;i<hexString.length()/2;i++){sb.append(hexString.substring(2*i,2*i+2));}hexString = sb.toString();byte[] bytes = new byte[hexString.length()/2];for(int i=0;i<hexString.length()/2;i++){bytes[i] = (byte)(0xff & Integer.parseInt(hexString.substring(2*i, 2*i+2), 16));}return bytes;}/** * 将16进制的字符串转换成string * @param hexString * @return */public static String hexStringToString(String hexString,String charsetName){try {return new String(hexStringTobytes(hexString),charsetName);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;}/** * 将16进制字符串按特定格式格式化 * @param hexString * @return */public static String hexStringFormat(String hexString){StringBuilder sb = new StringBuilder();sb.append("\r\n");for(int i=0;i<hexString.length()/2;i++){sb.append(hexString.substring(2*i, 2*i+2).toUpperCase());sb.append(" ");if(i%16==15){sb.append("\r\n");}}return sb.toString();}}
测试类
package utils;/** * * @author qq1623299667 * */public class TestRadix {public static void main(String[] args) {try{//将bytes的16进制输出String hexString1 = HexUtil.bytesToHexString("你有没有freestyle?".getBytes("utf-8"));System.out.println(hexString1);//将String的16进制输出String hexString2 = HexUtil.stringToHexString("我有freestyle", "utf-8");System.out.println(hexString2);//将16进制的字符串转换成bytebyte[] bytes = HexUtil.hexStringTobytes(HexUtil.stringToHexString("请务必相信我真的有freestyle!", "utf-8"));System.out.println(new String(bytes,"utf-8"));//将16进制的字符串转换成stringString string = HexUtil.hexStringToString(HexUtil.stringToHexString("不!你骗人,你根本就没有freestyle!", "utf-8"),"utf-8");System.out.println(string);//将16进制格式化成特定格式String hexStringFormat = HexUtil.hexStringFormat(HexUtil.stringToHexString("阁下果然有freestyle,是在下输了!", "utf-8"));System.out.println(hexStringFormat);}catch(Exception e){e.printStackTrace();}}}
输出结果
e4bda0e69c89e6b2a1e69c89667265657374796c65efbc9fe68891e69c89667265657374796c65请务必相信我真的有freestyle!不!你骗人,你根本就没有freestyle!E9 98 81 E4 B8 8B E6 9E 9C E7 84 B6 E6 9C 89 66 72 65 65 73 74 79 6C 65 2C E6 98 AF E5 9C A8 E4 B8 8B E8 BE 93 E4 BA 86 EF BC 81
阅读全文
1 0
- 【util】用java实现16进制和byte,string的相互转换以及格式化16进制
- Java的String/byte[]/16进制相互转换
- Java byte[]数组和十六进制String之间的转换Util
- Java String 和 byte[] 之间的相互转换
- Java中的byte[]和String的相互转换
- java byte[] 和 double以及所有数据类型的相互转换
- Java String与byte[]的相互转换
- java 16进制字符串和byte数组的相互转换
- String和byte[]之间的相互转换
- java String和byte[]转换(包括16进制String和byte[]转换)
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类 .
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类
- Java中有关byte和String的转换笔记和byte[]到short、int、long的相互转换
- 使用Explorer++批量打开多个目录
- JAVAEE之jQuery
- Leetcode 661
- 快速查找素数-0J
- mtd驱动分析-硬件驱动层
- 【util】用java实现16进制和byte,string的相互转换以及格式化16进制
- javascript中 slice,splice和split三个函数的区别
- java类加载器
- 快速查找素数
- React Native 学习笔记(一)---Hello, New World!
- Spring boot之拦截器的实现
- Java基础7:集合类常见面试题
- js debug
- [SDOI2011]计算器 BSGS