JAVA 学习(一):16进制字符串自增的实现

本文介绍了作者在学习JAVA过程中,为了解决UUID和MAC地址自增的需求,如何实现16进制字符串自增的方法。通过将16进制字符转换为数字进行运算,处理进位问题,逐步解决多位数自增、字符大小写、负数及分隔符等复杂情况。
摘要由CSDN通过智能技术生成

JAVA学习系列,并不是从基础去讲java的知识,而是把我在学习或是工作中,一些思想、逻辑总结出来。

原先在工作中,因为测试的需要,经常要往数据库中批量的插数据。而表的主键用的是UUID,是由16进制字符加“-”组成的,还有设备的mac地址是由16进制字符加“:”组成的,那个时候,我刚学java,也不知道java里面有方法,可以生成UUID,所以我当时的解决方案是,给定一个初始的UUID,然后让UUID自增。当然,实现自增是需要做些处理的。UUID是由32个16进制字符组成,如果转换成二进制的话,就是128位,而在java里面,一个long类型的数字,也才64位,所以一个UUID要转换成数字的话,需要两个long来表示。所以,最终的处理逻辑就是:UUID先去掉分隔符“-”,再分成两半,两部分再转换成long,自增以后,再转换成16进制字符串,再拼接“-”,变成需要的字符串。当然mac的自增与这个类似。后来,我就思考,这字符串转成数字,自增以后又转换成字符串,转来转去的,可不可以不转换成数字就实现自增?基于这样的思想,就开始了我的探索之路。

要实现16进制字符串的自增,先从简单的做起,从一位数的加法做起,比如'f'+5,要怎么实现?那么要实现这个加法,需要解决三个问题:1. 把'f'转换成数字,再进行运算。2.运算之后的结果,再转换回16进制字符串。3.进位问题。解决方法就是:在方法内维护一个字符数组,元素是0-9a-f这几个字符,然后有了'f',那么就查找'f'在数组中的下标,下标是几,那么这个字符就转换成数字几。查找后,'f'在数组中的下标是15,那是'f'就转换成数字15,用15+5得到运算结果20,然后再把20转换成16进制,那么把运算结果转换成16进制,存在两种情况,一种是运算结果小于16,这个时候不需要进位,结果是几就是几,比如结果是11,不需要进位,那么就到字符数组中查找下标是11的元素,结果是'b',那么最终的结果就会显示为“b”

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值