admin管理员组文章数量:1794759
Android
需要得到板子传过来的16进制转换为温度,之前只是正温度的转换,现在可以进行正负温度都可以进行转换,下面是工具类
public class TemUtils { private static String newRem; private static String newHead; private static StringBuffer stringBuffer = new StringBuffer(); /** * @param rem 16进制 * @return */ public static String judge(String rem){ String number = getRem(rem); String newNumber = number.substring(0,1); if (newNumber.equals("0")){ int ten = Integer.parseInt(number, 2); String newTen = String.valueOf(ten); return newTen; }else { String newNum = number.substring(1,number.length()); int newNumLength = newNum.length(); for (int i = 0; i < newNumLength; i++){ String substring = newNum.substring(0, 1); if (substring.equals("0")){ newNum = newNum.substring(1,newNum.length()); stringBuffer.append("1"); }else { newNum = newNum.substring(1,newNum.length()); stringBuffer.append("0"); } } String newStringBuffer = "1" + String.valueOf(stringBuffer); String sum = TemUtils.add(newStringBuffer, "00000001"); String newSum = sum.substring(1,sum.length()); int newTen = Integer.parseInt(newSum, 2); String finalTen = "-" + String.valueOf(newTen); return finalTen; } } /** * 将16进制转换为2进制并补位 * @param rem * @return */ public static String getRem(String rem){ int ten = Integer.parseInt(rem, 16); String bin = Integer.toBinaryString(ten); int remLength = bin.length(); if (remLength >= 8){ int i = remLength % 8; if (i != 0){ newHead = String.valueOf(bin); for (int a = 0; a < i;a++){ newHead = "0" + newHead; } newRem = newHead; }else { newRem = String.valueOf(bin); } }else { int i = 8 % remLength; if (i != 0){ newHead = String.valueOf(bin); for (int a = 0; a < i;a++){ newHead = 0 + newHead; } newRem = newHead; }else { newRem = String.valueOf(bin); } } return newRem; } /** * 将两个二进制进行相加 * @param b1 * @param b2 * @return */ public static String add(String b1, String b2) { int len1 = b1.length(); int len2 = b2.length(); String s1 = b1; String s2 = b2; StringBuffer sb1 = new StringBuffer(); //先将位数较少的二进制高位补零 if(len1 > len2) { for(int i = 0; i < (len1 - len2); i++) { sb1.append(0); } sb1.append(b2); s1 = b1; s2 = sb1.toString(); } else if(len1 < len2) { for(int j = 0; j < (len2 - len1); j++) { sb1.append(0); } sb1.append(b1); s1 = sb1.toString(); s2 = b2; } //进位 int flag = 0; StringBuffer sb2 = new StringBuffer(); for(int z = s1.length() - 1; z >= 0; z--) { //字符’0’的对应的ASCII十进制是48 //分情况判断 if((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 0) { sb2.append(flag); flag = 0; continue; } if(((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 1 && flag == 0) || ((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 0 && flag == 0)) { sb2.append(1); flag = 0; continue; } if(((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 1 && flag == 1) || ((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 0 && flag == 1)) { sb2.append(0); flag = 1; continue; } if((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 1 && flag == 0) { sb2.append(0); flag = 1; continue; } if((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 1 && flag == 1) { sb2.append(1); flag = 1; } } if(flag == 1) { sb2.append(flag); } //倒置 sb2.reverse(); return sb2.toString(); } }本文标签: android
版权声明:本文标题:Android 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686576494a83700.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论