IE盒子

搜索
查看: 104|回复: 0

java基础-十进制转十六进制

[复制链接]

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-1-12 17:24:49 | 显示全部楼层 |阅读模式
需求:

从序号1开始,每次请求加1,并将序号转为十六进制八字节小头字节序
分析:

初始内容:序号初始值为1
条件:
1.每次请求加1。
2.序号转为十六进制
3.十六进制规则为八字节小头字节序。小头字节序即低字节在前。
编码

1.将数字序号从十进制转为16进制

/**
* 10进制转16进制 长度为自定义,满足不同的需求, 0填充
* @param serialNum
* @return
* @author wyc
* @date 2022-11-25
*/
public static String toHex(Long serialNum, int length) {
    // String.format("%016x", 1) 将1专程16进制,不足的以0补上
    return String.format("%0" + length + "x", Long.valueOf(serialNum));
}关于String.format()的使用在下篇文章整理
2.将十六进制高低位转换

/**
* 十六进制字符串高低位转换
* @param hex
* @return
* @author wyc
* @date 2022-11-25
*/
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();
}3.调用方法

/**
  * 得到十六进制的字符串,可指定需要转换的长度
  *
  * @param serialNum 串行num
  * @return {@link String}
  */
public static String getHexNum(Long serialNum, int length) {
  return reverse(hex(serialNum, length));
}

/**
  * main测试方法
  *
  * @param args arg游戏
  */
public static void main(String[] args){
  for(long i = 0; i < 20; i++){
     System.out.println("十进制:" + i + ",转换后十六进制:" + getHexCardNum(i, 16));
  }
}
​main方法输出结果:

  • 十进制:  0,转换后十六进制:0000000000000000
  • 十进制:  1,转换后十六进制:0100000000000000
  • 十进制:  2,转换后十六进制:0200000000000000
  • 十进制:  3,转换后十六进制:0300000000000000
  • 十进制:  4,转换后十六进制:0400000000000000
  • 十进制:  5,转换后十六进制:0500000000000000
  • 十进制:  6,转换后十六进制:0600000000000000
  • 十进制:  7,转换后十六进制:0700000000000000
  • 十进制:  8,转换后十六进制:0800000000000000
  • 十进制:  9,转换后十六进制:0900000000000000
  • 十进制:10,转换后十六进制:0A00000000000000
  • 十进制:11,转换后十六进制:0B00000000000000
  • 十进制:12,转换后十六进制:0C00000000000000
  • 十进制:13,转换后十六进制:0D00000000000000
  • 十进制:14,转换后十六进制:0E00000000000000
  • 十进制:15,转换后十六进制:0F00000000000000
  • 十进制:16,转换后十六进制:1000000000000000
  • 十进制:17,转换后十六进制:1100000000000000
  • 十进制:18,转换后十六进制:1200000000000000
  • 十进制:19,转换后十六进制:1300000000000000
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表