首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

下令代码转换应用

2012-08-24 
命令代码转换应用package com.whjnkj.common.cmdCodeConvertpublic class CMDCodeConvert {/** * (转换)

命令代码转换应用

package com.whjnkj.common.cmdCodeConvert;public class CMDCodeConvert {/** * (转换)把传入的十进制数值转换为八位十六进制的命令代码(转换) *  * @param value * @return */public static String floatToIntBitsToHexCMDCode(float value){String returnString=null;if(value==0){returnString= "00000000";}else {int aa=Float.floatToIntBits(value);String aaa= Integer.toHexString(aa);StringBuffer sb= new StringBuffer();String b1=aaa.substring(0, 2);String b2=aaa.substring(2, 4);String b3=aaa.substring(4, 6);String b4=aaa.substring(6, 8);sb.append(b4);sb.append(b3);sb.append(b2);sb.append(b1);String bb=sb.toString();bb=bb.toUpperCase();returnString=bb;}return returnString;}/** * (解析)把传入的八位十六进制命令数值代码 转化为十进制数值(解析) * @param value * @return */public static Float intBitsToDecToFloatCMDCode(String value){Float returnNum=null;if(value.length()==8){String bb = value;StringBuffer sb2 = new StringBuffer();String c1 = bb.substring(0, 2);String c2 = bb.substring(2, 4);String c3 = bb.substring(4, 6);String c4 = bb.substring(6, 8);sb2.append(c4);sb2.append(c3);sb2.append(c2);sb2.append(c1);String cc = sb2.toString();int zf=1;String zf1 = cc.substring(0, 1);if(zf1.equals("C")){zf=-1;StringBuffer sb=new StringBuffer();sb.append("4");sb.append(cc.substring(1));cc=sb.toString();}int ddd =Integer.valueOf(cc, 16);float dd = Float.intBitsToFloat(ddd);returnNum=dd*zf;}return returnNum;}/** * (转换)把传入的十进制数值转换为四位的命令代码(转换) *  * 传入一个float类型的数字 转化为vvxx的字符 vv为小数位 的 十六进制 xx为整数位 的 十六进制 * 小数位如果只有一位十进制  比如:9  ,则变成90后再转换为16进制 * 如果此数是正数: * 整数位转换成16进制以后如果只有一位 则前面加0 * 小数位如果转换成16进制以后 如果只有一位 则前面加0 * 传入数值如果是负数: * 整数位转换成16进制以后如果只有一位 则前面加0 * 小数位在10进制的时候,小数位如果只有一位十进制  比如:9  ,则变成90,而后+128而后再转换成16进制 * @param value * @return */public static String floatToHexToCMDCode(float valueIns) {if(valueIns>=-255.99&& valueIns<=255.99){int negtive=0;if(valueIns<0){negtive=1;}float value = Math.abs(valueIns);// 取得小数和整数部分的数字// 传入数值转化为字符String preString = String.valueOf(value);// 整数部分String preintPart = null;// 小数部分String prefloPatr = null;int index = preString.indexOf('.');if (index != -1) {preintPart = preString.substring(0, index);prefloPatr = preString.substring(index + 1);} else {preintPart = preString;prefloPatr = "0";}// 如果小数位只有一位 要在后面加0后再转换为16进制if (prefloPatr.length() == 1) {StringBuffer sb2 = new StringBuffer();sb2.append(prefloPatr);sb2.append("0");prefloPatr = sb2.toString();}//传入数值如果是负数 小数位加0后的十进制数要+128后再转换为16进制if(negtive==1){int floIn = Integer.parseInt(prefloPatr);int floNegConv = floIn+128;prefloPatr=String.valueOf(floNegConv);}// 转换为十六进制 整数位String preStrIntPart = Integer.toHexString(Integer.parseInt(preintPart));// 转换为十六进制 小数位String preStrFloatPart = Integer.toHexString(Integer.parseInt(prefloPatr));// 检验转化后的数字位数如果只有 一位的 前面加0if (preStrIntPart.length() == 1) {StringBuffer sb = new StringBuffer();sb.append("0");sb.append(preStrIntPart);preStrIntPart = sb.toString();}if (preStrFloatPart.length() == 1) {StringBuffer sb1 = new StringBuffer();sb1.append("0");sb1.append(preStrFloatPart);preStrFloatPart = sb1.toString();}// 小数位和整数位连接StringBuffer sb = new StringBuffer();sb.append(preStrFloatPart);sb.append(preStrIntPart);String pressValueHexforCMD = sb.toString();pressValueHexforCMD=pressValueHexforCMD.toUpperCase();return pressValueHexforCMD;}else{return null;}}/** * (解析)把传入的四位十六进制命令数值代码 转化为十进制数值(解析) *  * @param hexValue * @return */public static Float convertHexCmdValuetoDecValue(String hexValue){if (hexValue.length() == 4) {int neg = 1;// 十六进制 小数位String floPartHex = hexValue.substring(0, 2);// 十六进制整数位String intPartHex = hexValue.substring(2);// 十进制小数位String floPartDecStr = Integer.valueOf(floPartHex, 16).toString();// 如果小数位的数值大于等于128说明这个数是负数int floVal = Integer.parseInt(floPartDecStr);if (floVal >= 128) {floVal = floVal - 128;floPartDecStr = String.valueOf(floVal);neg = -1;}// 判断小数位是几位 而后转化if (floPartDecStr.length() == 1) {StringBuffer sb1 = new StringBuffer();sb1.append("0.0");sb1.append(floPartDecStr);floPartDecStr = sb1.toString();} else if (floPartDecStr.length() > 1) {StringBuffer sb1 = new StringBuffer();sb1.append("0.");sb1.append(floPartDecStr);floPartDecStr = sb1.toString();}// 十进制小数float floPartDec = Float.parseFloat(floPartDecStr);// 十进制整数int intPartDec = Integer.valueOf(intPartHex, 16);// 加合成一个数float retValue = floPartDec + intPartDec;retValue = retValue * neg;return retValue;} else {return null;}}/** * (解析)把传入的两位十六进制命令数值代码 转化为十进制数值(解析) *  * @param hexValue * @return */public static Float convertHexCmdValuetoDecValueTwo(String intPartHex){if (intPartHex.length() == 2) {int neg = 1;// 十进制整数int intPartDec = Integer.valueOf(intPartHex, 16);// 加合成一个数float retValue = intPartDec;retValue = retValue * neg;return retValue;} else {return null;}}}

热点排行