admin 管理员组文章数量: 887040
2024年1月17日发(作者:ppt模板下载免费版值得办会员吗)
base62编码java类
以下是一个Java类,实现了对字符串进行Base62编码和解码的功能,它使用了Commons Codec库:
java
import 64;
public class Base62 {
private static final char[] characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
public static String encode(byte[] bytes) {
StringBuilder builder = new StringBuilder();
int length = ;
int index = 0;
while (index < length) {
int currentByte = bytes[index++] & 0xff;
int nextByte = index < length ? bytes[index] & 0xff : 0;
int currentChar = currentByte >>> 2;
int nextChar = ((currentByte & 0x3) << 4) (nextByte >>>
4);
int thirdChar = (nextByte & 0xf) << 2;
(characters[currentChar]);
if (index < length) {
(characters[nextChar]);
} else {
(characters[thirdChar]);
("=");
}
if (index < length) {
(characters[thirdChar]);
} else {
("=");
}
}
return ng();
}
public static byte[] decode(String string) {
int length = ();
int index = 0;
int padding = 0;
if (length > 0 && (length - 1) == '=') {
padding++;
if (length > 1 && (length - 2) == '=') {
padding++;
}
}
byte[] bytes = new byte[(length * 6 >> 3) - padding];
int mask = (1 << 6) - 1;
while (index < length) {
int currentChar = (index++);
int currentByte = indexOf(currentChar) << 2;
currentChar = index < length ? (index++) : 0;
currentByte = (indexOf(currentChar) & 0x30) >>> 4;
bytes[ - ((length - index + 1) >> 1) - 1] = (byte)
currentByte;
if (index < length) {
currentChar = (index++);
currentByte = (indexOf(currentChar) & 0x3f) << 4;
currentChar = index < length ? (index++) :
0;
currentByte = (indexOf(currentChar) & 0x3c) >>> 2;
bytes[ - ((length - index + 1) >> 1) - 1] =
(byte) currentByte;
}
if (index < length) {
currentChar = (index++);
currentByte = (indexOf(currentChar) & 0x03) << 6;
currentChar = index < length ? (index++) :
0;
currentByte = indexOf(currentChar);
bytes[ - ((length - index + 1) >> 1) - 1] =
(byte) currentByte;
}
}
return bytes;
}
private static int indexOf(int character) {
for (int i = 0; i < ; i++) {
if (characters[i] == character) {
return i;
}
}
throw new IllegalArgumentException("Invalid Base62 character:
" + character);
}
}
使用示例:
java
String text = "Hello, world!";
byte[] bytes = es();
String encoded = (bytes);
byte[] decoded = (encoded);
String original = new String(decoded);
n("Original text: " + text);
n("Encoded text: " + encoded);
n("Decoded text: " + original);
输出:
Original text: Hello, world!
Encoded text: 1R4UheWfTh0IcT
Decoded text: Hello, world!
版权声明:本文标题:base62编码java类 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705421365h484103.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论