Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编码(缩短)数字字符串_Java_Encoding_Base64 - Fatal编程技术网

Java 如何编码(缩短)数字字符串

Java 如何编码(缩短)数字字符串,java,encoding,base64,Java,Encoding,Base64,假设有一个数字str: 下面是id列表,我需要将它们合并到str中并将其存储到DB中,当我需要使用它时,我需要将其转换为原始id。 所以我需要缩短ID的大小 737689962182997408140941977444580734330925102594649‌​555 我使用base64对str进行编码,以: NzM3Njg5OTE2MjE4Mjk5MTc0MDgxNDAxOTQxOTc3MTQ0NDU4MDcxMzQzMzA5MjE1MTEwMjU5MTQ2NDk1NTU= 但实际上它太长了

假设有一个数字str:

下面是id列表,我需要将它们合并到str中并将其存储到DB中,当我需要使用它时,我需要将其转换为原始id。 所以我需要缩短ID的大小


737689962182997408140941977444580734330925102594649‌​555

我使用base64对str进行编码,以:
NzM3Njg5OTE2MjE4Mjk5MTc0MDgxNDAxOTQxOTc3MTQ0NDU4MDcxMzQzMzA5MjE1MTEwMjU5MTQ2NDk1NTU=

但实际上它太长了。 有什么方法可以缩短str的长度(编码)并将其解码为以前的长度吗?

尝试压缩数据

下面是java示例

尝试压缩数据

下面是java示例

试试这个

String numText= "7376899621829974081409419774445807343309251102594649555";
        BigInteger bi= new BigInteger(numText);
        String encodedText= bi.toString(36);
        BigInteger nbi= new BigInteger(encodedText, 36);
        String originalText= nbi.toString();
数字字符串会缩短,但要保持值不变。

试试这个

String numText= "7376899621829974081409419774445807343309251102594649555";
        BigInteger bi= new BigInteger(numText);
        String encodedText= bi.toString(36);
        BigInteger nbi= new BigInteger(encodedText, 36);
        String originalText= nbi.toString();


数字字符串会缩短,但要保持其值不变。

多长太长?您可以编写自己的编码和解码方法,将数字字符串拆分为长度6(或任何您想拆分的长度),然后将该字符串替换为A。例如,737689为A,962182为B等等。使用不同逻辑还有其他方法。我希望我的一个人能帮你。还有,你是如何编码的?如果将其编码为字符串,则长度将比将其视为数字时长。请尝试以下操作:
Base64.getEncoder().encodeToString(新的BigInteger(“737689962182997408140941977444580734330925102594649555”).toByteArray()
将数字字符串更改为更高的基数是否有效?多长太长?您可以编写自己的编码和解码方法,将数字字符串拆分为长度6(或任何您想要拆分的长度),然后将该字符串替换为a。例如,737689为a,962182为B等等。使用不同逻辑还有其他方法。我希望我的一个人能帮你。还有,你是如何编码的?如果你把它编码成一个字符串,它会比你把它当作一个数字时长。试试这个:
Base64.getEncoder().encodeToString(新的BigInteger(“7376899621829974081409419774445807343309251102594649555”)
把数字字符串改成更高的基数会有效吗?你能告诉我为什么BigInteger会让它变短吗?谢谢它将数字的基数从10改为36,从而将所需的字符数减少了19-20。7376899621829974081941977444580734330925102594649555之前没有逗号。很抱歉,我不清楚。。。你对str(数字)字符有什么理想的选择吗?你能告诉我为什么BigInteger使它变短了吗?谢谢它将数字的基数从10改为36,从而将所需的字符数减少了19-20。7376899621829974081941977444580734330925102594649555之前没有逗号。很抱歉,我不清楚。。。你有什么理想的str(数字)字符吗?