文章目录
前言
提示:今天做硬件读卡的时候10进制转换16进制 出现转换后16进制只有7位,查找资料 发现需要进行补位操作 记录学习
10进制转16进制自动补全8位
代码如下:
/**
* @program: chargingpile
* @description: 转成16进制卡号的工具类
* @author: Mr.ch
* @create: 2020-08-31
**/
public class HexUtils {
/**
* 解密后的卡号需要高低位转换(不足8位前面补0)
* 才能得到需要的16进制卡号
* @param serialNum
* @return
*/
public static String getHexCardNum(String serialNum) {
return reverse(hex(Integer.parseInt(serialNum)));
}
/**
* 10进制转16进制
* @param serialNum
* @return
*/
public static String hex(int serialNum) {
return String.format("%08x", Integer.valueOf(serialNum));
}
/**
* 十六进制字符串高低位转换
* @param hex
* @return
*/
public static String reverse( String hex) {
final char[] charArray = hex.toCharArray();
final int length = charArray.length;
final int times = length / 2;
for (int c1i = 0; c1i < times; c1i += 2) {
final int c2i = c1i + 1;
final char c1 = charArray[c1i];
final char c2 = charArray[c2i];
final int c3i = length - c1i - 2;
final int c4i = length - c1i - 1;
charArray[c1i] = charArray[c3i];
charArray[c2i] = charArray[c4i];
charArray[c3i] = c1;
charArray[c4i] = c2;
}
return new String(charArray).toUpperCase();
}
}
使用
代码如下:
@Test
public void testGetStr() {
System.out.println(HexUtils.getHexCardNum("113995025"));
}
参考文档地址
java 中 10进制 转为 4位 或者8位 16进制数
JAVA中String.format的用法
java怎样实现十六进制字符串高低位转换 双位反转