昨天在写安卓程序时有一个16进制的代码组装要求
要求: 将一个十进制的数值转为16进制.然后高位在前低位在后,并且不足8个字符的在后面补0
本来想着用以下代码处理
int strtotal = 149936;
String strHex2 = String.format("%08x", strtotal).toUpperCase();//高位补0
得到的值是000249B0
明显是不符合的只能另外写一个转换的方法
看代码,先写一个转换的方法
/**
* 十进制数据转换为16进制并高位在前,低位在后
* @param num 十进制数据
* @return
*/
public static String numToHex(int num) {
String hex = "";
while(num != 0) {
String h = Integer.toString(num & 0xff, 16);
if((h.length() & 0x01) == 1)
h = '0' + h;
hex = hex + h;
num = num >> 8;
}
return hex;
}
得到的结果为:b04902
好.还差最后一步.位数不足补0,调用以下代码处理一下吧
/**
* 字符串补0
* @param str
* @param strLength
* @return
*/
public static String addZeroForNum(String str, int strLength)
{
int strLen =str.length();
if(strLen
while(strLen
StringBuffer sb=new StringBuffer();
//sb.append("0").append(str);// 左补0
sb.append(str).append("0");//右补0
str = sb.toString();
strLen = str.length();
}
}
str = String.format(str).toUpperCase();//转为大写
return str;
}
最终结果得到:B0490200
完成.