Java实现的进制转换工具类完整示例
本文实例讲述了Java实现的进制转换工具类。分享给大家供大家参考,具体如下:
importjava.nio.charset.Charset; /** *十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(其中:A~F即10~15)。
*例如十进制数57,在二进制写作111001,在16进制写作39。
*像java,c这样的语言为了区分十六进制和十进制数值,会在十六进制数的前面加上0x,比如0x20是十进制的32,而不是十进制的20
* *参考:https://my.oschina.net/xinxingegeya/blog/287476 * *@authorLooly * */ publicclassHexKit{ /** *用于建立十六进制字符的输出的小写字符数组 */ privatestaticfinalchar[]DIGITS_LOWER={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; /** *用于建立十六进制字符的输出的大写字符数组 */ privatestaticfinalchar[]DIGITS_UPPER={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //----------------------------------------------------------------------------------------------------encode /** *将字节数组转换为十六进制字符数组 * *@paramdatabyte[] *@return十六进制char[] */ publicstaticchar[]encodeHex(byte[]data){ returnencodeHex(data,true); } /** *将字节数组转换为十六进制字符数组 * *@paramstr字符串 *@paramcharset编码 *@return十六进制char[] */ publicstaticchar[]encodeHex(Stringstr,Charsetcharset){ returnencodeHex(StrKit.getBytes(str,charset),true); } /** *将字节数组转换为十六进制字符数组 * *@paramdatabyte[] *@paramtoLowerCasetrue
传换成小写格式,false
传换成大写格式 *@return十六进制char[] */ publicstaticchar[]encodeHex(byte[]data,booleantoLowerCase){ returnencodeHex(data,toLowerCase?DIGITS_LOWER:DIGITS_UPPER); } /** *将字节数组转换为十六进制字符串 * *@paramdatabyte[] *@return十六进制String */ publicstaticStringencodeHexStr(byte[]data){ returnencodeHexStr(data,true); } /** *将字节数组转换为十六进制字符串 * *@paramdatabyte[] *@paramtoLowerCasetrue
传换成小写格式,false
传换成大写格式 *@return十六进制String */ publicstaticStringencodeHexStr(byte[]data,booleantoLowerCase){ returnencodeHexStr(data,toLowerCase?DIGITS_LOWER:DIGITS_UPPER); } //----------------------------------------------------------------------------------------------------decode /** *将十六进制字符数组转换为字符串 * *@paramhexStr十六进制String *@paramcharset编码 *@return字符串 */ publicstaticStringdecodeHexStr(StringhexStr,Charsetcharset){ if(StrKit.isEmpty(hexStr)){ returnhexStr; } returndecodeHexStr(hexStr.toCharArray(),charset); } /** *将十六进制字符数组转换为字符串 * *@paramhexData十六进制char[] *@paramcharset编码 *@return字符串 */ publicstaticStringdecodeHexStr(char[]hexData,Charsetcharset){ returnStrKit.str(decodeHex(hexData),charset); } /** *将十六进制字符数组转换为字节数组 * *@paramhexData十六进制char[] *@returnbyte[] *@throwsRuntimeException如果源十六进制字符数组是一个奇怪的长度,将抛出运行时异常 */ publicstaticbyte[]decodeHex(char[]hexData){ intlen=hexData.length; if((len&0x01)!=0){ thrownewRuntimeException("Oddnumberofcharacters."); } byte[]out=newbyte[len>>1]; //twocharactersformthehexvalue. for(inti=0,j=0;j>>4]; out[j++]=toDigits[0x0F&data[i]]; } returnout; } /** *将十六进制字符转换成一个整数 * *@paramch十六进制char *@paramindex十六进制字符在字符数组中的位置 *@return一个整数 *@throwsRuntimeException当ch不是一个合法的十六进制字符时,抛出运行时异常 */ privatestaticinttoDigit(charch,intindex){ intdigit=Character.digit(ch,16); if(digit==-1){ thrownewRuntimeException("Illegalhexadecimalcharacter"+ch+"atindex"+index); } returndigit; } //----------------------------------------------------------------------------------------Privatemethodend /** *2进制转16进制 *@parambString2进制字符串 *@return */ publicstaticStringbinary2Hex(StringbString){ if(bString==null||bString.equals("")||bString.length()%8!=0) returnnull; StringBuffertmp=newStringBuffer(); intiTmp=0; for(inti=0;i PS:这里再为大家推荐几款本站的在线进制转换与计算工具,相信对于大家能有所帮助:
在线任意进制转换工具:
http://tools.jb51.net/transcoding/hexconvert在线标准计算器:
http://tools.jb51.net/jisuanqi/jsq在线科学计算器:
http://tools.jb51.net/jisuanqi/jsqkexue更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。