对IP进行四位加密

本文介绍了一种将0-255范围内的整数转换为Base36编码的方法,该方法使用自定义Base36字符集进行编码,并提供了解码功能。通过示例演示了如何将数字255转换为Base36编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于某种需要,需要对0-255的IP进行四位转换,例如255转为类似“vc52”这样的四个字符的字符串。

public class Base36 {
private final static int addition = 100000;
private final static byte[] Base36 = {
(byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4',
(byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9',
(byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E',
(byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J',
(byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N', (byte) 'O',
(byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T',
(byte) 'U', (byte) 'V', (byte) 'W', (byte) 'X', (byte) 'Y',
(byte) 'Z'
};
private static int transform(int base){
int level = addition;
base += level;
System.out.println(base);
return base;
}
public static String encode(int dex){
dex = transform(dex);
StringBuilder code36 = new StringBuilder();
int quotient = dex;
int remainder = 0;
char temp = '0';
while((quotient / 36) > 0){
remainder = quotient % 36;
temp = (char) Base36[remainder];
code36.append(temp);
quotient = quotient / 36;
}
if((remainder = quotient % 36) > 0){
code36.append((char) Base36[remainder]);
}
return code36.toString();
}

public static int decode(String code){
int base = 0;
int level = 0;
for(int i = 0; i < code.length(); i++){
level = getIndex((byte) code.charAt(i));
if(i == 0){
base += level;
} else if(i == 1){
base += level * 36;
} else if(i == 2){
base += level * 36*36;
} else if(i == 3){
base += level * 36*36*36;
}
}
System.out.println(base);
base %= addition;
return base;
}

private static int getIndex(byte code){
code = change2UpCase(code);
int index = 0;
for(int i = 0; i < Base36.length; i++){
if(Base36[i] == code){
index = i;
break;
}
}
return index;
}

private static byte change2UpCase(byte code){
if(code >= 'a' && code <= 'z'){
code = (byte) (code - 32);
}
return code;
}

public static void main(String[] args) {
// String result = encode(255);
// System.out.println(result);
System.out.println(decode("vC52"));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值