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