commons-codec-*.jar里有通用方法
Hex.encodeHex(byte[]) 字节数组转换成16进制字符串 (可转成大写的)
Hex.decodeHex(char[]) 16进制“字符串”转换成字节数组 (支持大写的)
下面的两个是自定义写法,建议用通用方法。
import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; /** * 字符串工具类 * @author happyqing * @since 2013.11.6 */ public class StringUtil { /** * 字节数组转换成16进制字符串 * @param bytes 字节数组 * @return 16进制字符串 */ public static String hexEncode(byte[] bytes) { if (bytes == null || bytes.length <= 0) { return null; } return new String(Hex.encodeHex(bytes)); //Hex.encodeHex(bytes, false) } /** * 16进制字符串转换成字节数组 * @param hexStr 16进制字符串 * @return 字节数组 */ public static byte[] hexDecode(String hexStr) { if (hexStr == null || "".equals(hexStr)) { return null; } try { char[] cs = hexStr.toCharArray(); return Hex.decodeHex(cs); } catch (DecoderException e) { e.printStackTrace(); } return null; } /** * 字节数组转为16进制字符串 * @param bytes 字节数组 * @return 16进制字符串 */ public static String byteArray2HexString(byte[] bytes) { if (bytes == null || bytes.length <= 0) { return null; } //先把byte[] 转换维char[],再把char[]转换为字符串 char[] chars = new char[bytes.length * 2]; // 每个byte对应两个字符 final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; for (int i = 0, j = 0; i < bytes.length; i++) { chars[j++] = hexDigits[bytes[i] >> 4 & 0x0f]; // 先存byte的高4位 chars[j++] = hexDigits[bytes[i] & 0x0f]; // 再存byte的低4位 } return new String(chars); } /** * 16进制字符串转字节数组 * @param hexString 16进制字符串 * @return 字节数组 */ public static byte[] hexString2ByteArray(String hexString) { if (hexString == null || "".equals(hexString)) { return null; } //先把字符串转换为char[],再转换为byte[] int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] bytes = new byte[length]; String hexDigits = "0123456789abcdef"; for (int i = 0; i < length; i++) { int pos = i * 2; // 两个字符对应一个byte int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1 int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2 if (h == -1 || l == -1) { // 非16进制字符 return null; } bytes[i] = (byte) (h | l); } return bytes; } /** * @param args */ public static void main(String[] args) { //String str = "15811111111"; String str = "字节数组转16进制字符串"; String result = null; byte[] bytes = null; long b = System.currentTimeMillis(); for(int i=0; i<10000; i++){ //result = byteArray2HexString(str.getBytes()); //27 result = hexEncode(str.getBytes()); //32 } System.out.println("耗时:"+(System.currentTimeMillis()-b)); System.out.println("result:"+result); long b2 = System.currentTimeMillis(); for(int i=0; i<10000; i++){ //bytes = hexString2ByteArray(result); //32 bytes = hexDecode(result); //16 } System.out.println("耗时:"+(System.currentTimeMillis()-b2)); System.out.println("result:"+new String(bytes)); } }
相关推荐
android byte字节数组转换十六进制字符串一个demo。里面有几种转换测试代码。我的博客地址:http://blog.csdn.net/qq_16064871。
16进制与字符串、字节数组之间的转换 16进制与字符串、字节数组之间的转换
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
最近由于工作上的需要,遇到进制转换的问题。涉及到的进制主要是 十进制,十六进制,二进制中间的转换。还包括了一个字节数组 与十六进制字符串的互相转换。估计遇到蓝牙通信的朋友,应该用的上。
labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
输入string 输出byte 16进制下的转换
NULL 博文链接:https://hw1287789687.iteye.com/blog/1882644
16进制与ASCII互转程序和代码,比较简单代码网上的太复杂
代码如下:/// <summary> /// 字符串转16进制字节数组 /// </summary> /// ”hexString”></param> /// <returns></returns> private static byte[] strToToHexByte(string hexString) { hexString = hexString....
字符串转化为16进制的数组,字节数组如何转化为字符串
字符串之间的转化通用,字节数组转化为十六进制字符串,16进制转化为byte数组,十六进制字符串转字符串,将一条十六进制字符串转换为ASCII
NULL 博文链接:https://duanfei.iteye.com/blog/1883475
字符串转16进制字节,16进制字节转字符串
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * ...|老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显
该代码可以实现单精度浮点数和16进制字符之间的转换,包含源代码
二进制字符串转换成十六进制字符串,并返回byte数组 ...把16进制字符串转换成字节数组 把字节数组转换成16进制字符串 十六进制字符串转二进制字符串 二进制转十进制数 将数字(十进制)串转换为固定位数的二进制字符串
此工具应用于Android端与硬件通过socket通信时,需要传递的字节流,用于16进制数据流和字符串的相互转换工具类
C# string byte数组转换解析 C# string byte数组转换实现的过程是什么呢?C# string byte数组间的转换需要...byte[] 转成原16进制格式的string,例如0xae00cf, 转换成 "ae00cf";new byte[]{ 0x30, 0x31}转成"3031":