首页 > 解决方案 > 将 String 转换为 int 并再次转换回 String

问题描述

我有像 s="DLP_Classification_Rules" 这样的字符串来转换一些整数,并且再次使用该整数我必须转换回像 DLP_Classification_Rules 这样的相同字符串。

有没有办法使用base64或其他东西来做这样的事情。?

标签: java

解决方案


尝试这个。

static BigInteger strToInt(String s) {
    return new BigInteger(s.getBytes(StandardCharsets.UTF_8));
}

static String intToStr(BigInteger i) {
    return new String(i.toByteArray(), StandardCharsets.UTF_8);
}

String s="DLP_Classification_Rules";
BigInteger i = strToInt(s);
System.out.println(i);
String r = intToStr(i);
System.out.println(r);

输出:

1674664573062307484602880374649592966384086501927007577459
DLP_Classification_Rules

或者你可以像这样创建一个字符串池。

public class StringPool {
    private final Map<String, Integer> pool = new HashMap<>();
    private final List<String> list = new ArrayList<>();

    public int stringToInteger(String s) {
        Integer result = pool.get(s);
        if (result == null) {
            result = pool.size();
            pool.put(s, result);
            list.add(s);
        }
        return result;
    }

    public String integerToString(int i) {
        if (i < 0 || i >= pool.size())
            throw new IllegalArgumentException();
        return list.get(i);
    }
}

StringPool pool = new StringPool();
String s = "DLP_Classification_Rules";
int i = pool.stringToInteger(s);
System.out.println(i);
String r = pool.integerToString(i);
System.out.println(r);

输出:

0
DLP_Classification_Rules

推荐阅读