论坛首页 Java企业应用论坛

java 字符串 进制之间的转换

浏览 10831 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-06-21   最后修改:2010-06-21
最近项目中遇到一个问题:
String cardNum = "AC67D978";
,此时要求把cardNum转换为
cardNum = "2027513772"//十六进制0x78D967AC对应的十进制字符串
,考虑了好久,在同事的帮助下终于搞定,
不过并不知道这种方法是不是最佳,
/**
 * 将操作员编码替换为消费卡卡号(并转换为10进制)
 * @param cardNum  消费卡卡号(8字节)
 * @return reStr 返回值
 */
private static String byte2String(String cardNum) {
	String reStr = "001";//返回值
	try {
		if (cardNum.length() < 8) {
			throw new Exception("读取POS传送的消费卡卡号不足8位");
		}
		byte[] bs = cardNum.getBytes();
		byte[] b1 = new byte[bs.length];
		int[] b2 = new int[bs.length / 2];
		for (int i = 0; i < bs.length; i++) {//计算出cardNum中每一个字符对应的十进制
			if (bs[i] >= 'A' || bs[i] >= 'a') {
				b1[i] = (byte) (bs[i] - 0x30 - 7);
			} else {
				b1[i] = (byte) (bs[i] - 0x30);
			}
		}
		b2[0] = b1[6] << 4 | (b1[7] & 0x0f);//例:得到120(0x78)
		b2[1] = b1[4] << 4 | (b1[5] & 0x0f);//例:得到217(0xD9)
		b2[2] = b1[2] << 4 | (b1[3] & 0x0f);//例:得到103(0x67)
		b2[3] = b1[0] << 4 | (b1[1] & 0x0f);//例:得到172(0xAC)
			
		reStr = (b2[0] << 24 | b2[1] << 16 | b2[2] << 8 | b2[3]) + "";//得到2027513772(0x78D967AC)
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
		return reStr;
	}
	return reStr;
	}
   发表时间:2010-06-21  
http://www.iteye.com/topic/683454
0 请登录后投票
   发表时间:2010-06-21  
抛出异常的爱 写道
http://www.iteye.com/topic/683454

多谢抛哥的指点,不过有点不符合我的题意,呵呵
0 请登录后投票
   发表时间:2010-06-21  
int i=Integer.decode("0xFFFF");

0 请登录后投票
   发表时间:2010-06-21  
明白没,,,
0 请登录后投票
   发表时间:2010-06-21  
zuoge85 写道
int i=Integer.decode("0xFFFF");


感谢!!!
0 请登录后投票
   发表时间:2010-06-21   最后修改:2010-06-21
Integer.parseInt(String s, int radix);
Integer.toString(int i,int radix);
0 请登录后投票
   发表时间:2010-06-21  
sjynt131 写道
Integer.parseInt(String s, int radix);
Integer.toString(int i,int radix);

当初没想到java的API,真是惭愧啊
0 请登录后投票
   发表时间:2010-06-21  
没想到javaeye已经沦落至此了
0 请登录后投票
   发表时间:2010-06-22   最后修改:2010-06-22
racnow 写道
没想到javaeye已经沦落至此了


考你个问题。别说别个。


class A{
public static void m(Double d){
}

}
class B{
public static void m(double d){

}
}


能不能调用
A.m(12);

B.m(new Integer(12));

关键是why?

1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics