配色: 字号:
JAVA 十六进制与字符串的转换
2016-09-05 | 阅:  转:  |  分享 
  
JAVA十六进制与字符串的转换

将指定byte数组以16进制的形式打印到控制台

toHexStringpublicstaticStringtoHexString(inti)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。如果参数为负,那么无符号整数值为参数加上232;否则等于该参数。将该值转换为十六进制(基数16)的无前导0的ASCII数字字符串。如果无符号数的大小值为零,则用一个零字符''0''(''\u0030'')表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:0123456789abcdef这些字符的范围是从''\u0030''到''\u0039''和从''\u0061''到''\u0066''。如果希望得到大写字母,可以在结果上调用String.toUpperCase()方法:Integer.toHexString(n).toUpperCase()参数:i-要转换成字符串的整数。返回:用十六进制(基数16)参数表示的无符号整数值的字符串表示形式。//转化字符串为十六进制编码publicstaticStringtoHexString(Strings){Stringstr="";for(inti=0;i>4));sb.append(hexString.charAt((bytes[i]&0x0f)>>0));}returnsb.toString();}/将16进制数字解码成字符串,适用于所有字符(包括中文)/publicstaticStringdecode(Stringbytes){ByteArrayOutputStreambaos=newByteArrayOutputStream(bytes.length()/2);//将每2位16进制整数组装成一个字节for(inti=0;i
复制代码代码如下:

packagecom.nantian.iclient.atm.sdb;publicclassUtil{publicUtil(){}/将指定byte数组以16进制的形式打印到控制台@paramhintString@parambbyte[]@returnvoid/publicstaticvoidprintHexString(Stringhint,byte[]b){System.out.print(hint);for(inti=0;i0xEF@paramsrc0byte@paramsrc1byte@returnbyte/publicstaticbyteuniteBytes(bytesrc0,bytesrc1){byte_b0=Byte.decode("0x"+newString(newbyte[]{src0})).byteValue();_b0=(byte)(_b0<<4);byte_b1=Byte.decode("0x"+newString(newbyte[]{src1})).byteValue();byteret=(byte)(_b0^_b1);returnret;}/将指定字符串src,以每两个字符分割转换为16进制形式如:"2B44EFD9"-->byte[]{0x2B,0x44,0xEF,0xD9}@paramsrcString@returnbyte[]/publicstaticbyte[]HexString2Bytes(Stringsrc){byte[]ret=newbyte[8];byte[]tmp=src.getBytes();for(inti=0;i<8;i++){ret[i]=uniteBytes(tmp[i2],tmp[i2+1]);}returnret;}}

献花(0)
+1
(本文系白狐一梦首藏)