java 十六进制转十进制_Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)...

/*** 数据类型转换工具类

*@authorcyf

**/

public classNumConvertUtil{/*** bytes 转16进制字符串

*@parambArray

*@return

*/

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb= newStringBuffer(bArray.length);

String sTemp;for (int i = 0; i < bArray.length; i++) {

sTemp= Integer.toHexString(0xFF &bArray[i]);if (sTemp.length() < 2)

sb.append(0);

sb.append(sTemp.toUpperCase());

}returnsb.toString();

}/*** 16进制字符串转bytes

*@paramhex

*@return

*/

public static byte[] hexStringToByte(String hex) {int len = 0;int num=0;//判断字符串的长度是否是两位

if(hex.length()>=2){//判断字符喜欢是否是偶数

len=(hex.length() / 2);

num= (hex.length() % 2);if (num == 1) {

hex= "0" +hex;

len=len+1;

}

}else{

hex= "0" +hex;

len=1;

}byte[] result = new byte[len];char[] achar =hex.toCharArray();for (int i = 0; i < len; i++) {int pos = i * 2;

result[i]= (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));

}returnresult;

}private static int toByte(charc) {if (c >= 'a')return (c - 'a' + 10) & 0x0f;if (c >= 'A')return (c - 'A' + 10) & 0x0f;return (c - '0') & 0x0f;

}/*** 16进制字符串转十进制int

*@paramHexString

*@return

*/

public static intHexStringToInt(String HexString) {int inJTFingerLockAddress = Integer.valueOf(HexString, 16);returninJTFingerLockAddress;

}/*** 十进制int转16进制字符串

*@paramHexString

*@return

*/

public static String IntToHexString(intnum) {

String hexString=Integer.toHexString(num);returnhexString;

}/*** 16进制String转BCD

*@paramasc

*@return

*/

public static byte[] strToBcd(String asc) {int len =asc.length();int mod = len % 2;if (mod != 0) {

asc= "0" +asc;

len=asc.length();

}byte abt[] = new byte[len];if (len >= 2) {

len= len / 2;

}byte bbt[] = new byte[len];

abt=asc.getBytes();intj, k;for (int p = 0; p < asc.length()/2; p++) {if ( (abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {

j= abt[2 * p] - '0';

}else if ( (abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {

j= abt[2 * p] - 'a' + 0x0a;

}else{

j= abt[2 * p] - 'A' + 0x0a;

}if ( (abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {

k= abt[2 * p + 1] - '0';

}else if ( (abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {

k= abt[2 * p + 1] - 'a' + 0x0a;

}else{

k= abt[2 * p + 1] - 'A' + 0x0a;

}int a = (j << 4) +k;byte b = (byte) a;

bbt[p]=b;

}returnbbt;

}/*** String 类型数字转化为Double 保留置顶小数位(用于显示金额等。)

*@parammoney

*@paramtype 保留小数点位数 #.00保留两位 #.0保留一位 #保留整数

*@return

*/

public staticString strToDouble(String money,String type){

String toDouble= newDecimalFormat(type).format(Double.parseDouble(money));returntoDouble;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用Integer类的toHexString()方法将一个十进制转换十六进制字符串,例如: ```java int decimal = 255; String hex = Integer.toHexString(decimal); System.out.println(hex); // 输出 ff ``` 同样地,可以使用Integer类的parseInt()方法将一个十六进制字符串转换为对应的十进制数,例如: ```java String hex = "ff"; int decimal = Integer.parseInt(hex, 16); System.out.println(decimal); // 输出 255 ``` 如果需要将一个字符串转换十六进制表示,可以使用String类的getBytes()方法将字符串转换为字节数组,然后再使用Integer类的toHexString()方法将每个字节转换为对应的十六进制字符串,最后将转换后的字符串拼接起来,例如: ```java String str = "Hello, world!"; byte[] bytes = str.getBytes(); StringBuilder hex = new StringBuilder(); for (byte b : bytes) { hex.append(Integer.toHexString(b)); } System.out.println(hex.toString()); // 输出 48656c6c6f2c20776f726c6421 ``` 反过来,如果需要将一个十六进制字符串转换为原始的字符串,可以先将十六进制字符串每两个字符分为一组,然后使用Integer类的parseInt()方法将每组转换为对应的字节,最后使用String类的构造方法将转换后的字节数组转换为字符串,例如: ```java String hex = "48656c6c6f2c20776f726c6421"; int len = hex.length(); byte[] bytes = new byte[len / 2]; for (int i = 0; i < len; i += 2) { bytes[i / 2] = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); } String str = new String(bytes); System.out.println(str); // 输出 Hello, world! ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值