1. 程式人生 > >java 10進位制和5進位制互轉 生成的唯一邀請碼

java 10進位制和5進位制互轉 生成的唯一邀請碼

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;
import java.util.Date;
import java.util.Objects;
import java.util.Random;
import static java.time.ZoneId.SHORT_IDS;
/**
 */
public class Main {

    private static final 
Logger LOGGER = LoggerFactory.getLogger(Main.class); // 對應5進位制的值: a->0,1->1,b->2,2->3,c-4private static final char [] ARRAY = {'a','1','b','2','c'}; private static final String OTHER_CHAR = "A"; private static final int DECIMAL = 5; /** * 根據id獲取對應字串 * 10 進位制轉化 decimal *
@param id */ private static String passedBy(long id,Integer decimal){ char [] resultArray = new char[DECIMAL]; int length = ARRAY.length; while ((id/decimal) > 0){ int mod = (int)id%decimal; resultArray[--length]= ARRAY[mod]; id = id /decimal; } if(length > 0
){ // 防止達到array所代表進位制的最大值報錯,當達到進位制所表示的最大值時此時是aaaaa resultArray[--length] = ARRAY[(int)id%decimal]; } String resultStr = new String(resultArray,length,(ARRAY.length-length)); if(resultStr.length() < decimal){ StringBuilder sb = new StringBuilder(); sb.append(OTHER_CHAR); Random random = new Random(); for(int i = resultStr.length()+1;i < ARRAY.length;i++){ sb.append(ARRAY[random.nextInt(ARRAY.length)]); } resultStr += sb.toString(); } return resultStr; } private static int passedByChar(String para){ int index = para.indexOf(OTHER_CHAR); if(index < 0){ return getIdByPara(para); }else { return getIdByPara(para.substring(0,index)); } } private static int getIdByPara(String subStr){ // 進製表示的最大轉化資料 當 if(Objects.equals("aaaaa",subStr)){ return (int)Math.pow(DECIMAL,subStr.length()); } int sum = 0; char [] subCharArray = subStr.toCharArray(); int length = subCharArray.length; // 例子: sum += /**例子: bb2aA * sum += 2*(5^3)+2*(5^2)+3*(5^1)+0*(5^0) */ for(int i = 0;i < length;i++){ for(int j = 0;j < DECIMAL;j++){ if(Objects.equals(subCharArray[i],ARRAY[j])){ sum = sum + j * (int)Math.pow(DECIMAL,(length-i-1)); break; } } } return sum; } public static void main(String[] args) { int test = 315; System.out.println(test); String result = passedBy(test,5); System.out.println(result); System.out.println(passedByChar(result)); } }